我是PHP程序员,但我想讨论的内容受Java的影响。
在阅读了一些关于匈牙利表示法和几种语言命名约定的文章后,我证明了Java的接口命名约定有多清楚,我有一个问题。
考虑到对象集合的情况,我们有一个名为 AbstractCollection 的抽象类和一个名为列表的具体类,我该如何命名接口 列表?
问题是,在Java的命名约定中,接口没有前缀或后缀,例如 ListsInterface 或 InterfaceLists 。
列表是一个接口名称,显然,至少在PHP中,同一目录中的两个文件不能具有相同的类或接口名称。
我知道,不是每个类都需要一个接口,但如果我决定转到编程团队怎么办?其他程序员可能会使用我的类,但他们不应该打开类文件来查看它提供的公共方法。
只需阅读其界面,一切都很清楚。
目录结构点来自于添加具有相同名称的接口的子目录的可能性,并且在其中添加具体类的文件。 E.g:
/
/Collections
/Collections/Lists.php <-- Interface
/Colection/Lists/Lists.php <--- Concrete Class
现在怎么办?
答案 0 :(得分:1)
您不应该为接口和类指定相同的名称。决不。为了您的读者。
我认为你的特定问题与约定没什么关系,但是具体的命名问题Lists
听起来根本就不像是一个接口。 List
。但在这种情况下,实现类会有一个更具体的名称,如List_DoublyLinked
和List_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
我不知道这篇文章是否回答了你的问题,但我希望这会有所帮助。