命名约定或目录结构

时间:2011-10-27 17:51:43

标签: java php naming convention

我是PHP程序员,但我想讨论的内容受Java的影响。

在阅读了一些关于匈牙利表示法和几种语言命名约定的文章后,我证明了Java的接口命名约定有多清楚,我有一个问题。

考虑到对象集合的情况,我们有一个名为 AbstractCollection 的抽象类和一个名为列表的具体类,我该如何命名接口 列表

问题是,在Java的命名约定中,接口没有前缀或后缀,例如 ListsInterface InterfaceLists

列表是一个接口名称,显然,至少在PHP中,同一目录中的两个文件不能具有相同的类或接口名称。

我知道,不是每个类都需要一个接口,但如果我决定转到编程团队怎么办?其他程序员可能会使用我的类,但他们不应该打开类文件来查看它提供的公共方法。

只需阅读其界面,一切都很清楚。

目录结构点来自于添加具有相同名称的接口的子目录的可能性,并且在其中添加具体类的文件。 E.g:

/  
/Collections  
/Collections/Lists.php <-- Interface  
/Colection/Lists/Lists.php <--- Concrete Class  

现在怎么办?

2 个答案:

答案 0 :(得分:1)

您不应该为接口和类指定相同的名称。决不。为了您的读者。

我认为你的特定问题与约定没什么关系,但是具体的命名问题Lists听起来根本就不像是一个接口。 List。但在这种情况下,实现类会有一个更具体的名称,如List_DoublyLinkedList_SinglyLinked(或者您正在讨论的任何类型的列表)。

答案 1 :(得分:1)

我认为你应该检查PHP命名约定而不是Java。

http://framework.zend.com/manual/en/coding-standard.naming-conventions.html

Zend提供了一个很好的,几乎考虑了所有情况。

Symfony有另一个(http://trac.symfony-project.org/wiki/HowToContributeToSymfony#CodingStandards),Pear还有另一个(http://pear.php.net/manual/en/standards.php)。

在你的情况下,为了表明界面是一个界面,Zend强制你在你的界面上添加一个后缀。所以你的目录结构应该是:

Collections/
Collections/ListsInterface.php
Collections/Lists/ListAbstract.php
Collections/Lists/MyList.php

我不知道这篇文章是否回答了你的问题,但我希望这会有所帮助。