0

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

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

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

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

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

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

只需阅读它的界面,一切就清楚了。

目录结构点来自于添加与接口同名的子目录的可能性,并在其中添加具体类的文件。例如:

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

现在怎么办?

4

2 回答 2

1

您不应该为接口和类提供相同的名称。绝不。为了你的读者。

我认为您的特定问题与约定无关,但具体命名问题Lists听起来根本不像接口。List做。但在这种情况下,实现类将有一个更具体的名称,比如List_DoublyLinkedList_SinglyLinked(或任何你正在谈论的列表)。

于 2011-10-27T17:59:53.780 回答
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

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

于 2011-10-27T18:04:18.887 回答