2011-10-27 111 views
0

我是PHP程序員,但我想討論的是受Java的影響。命名約定或目錄結構

閱讀了一些關於匈牙利語法和幾種語言命名約定的文章後,我證明了Java的接口命名約定有多清晰,我有一個問題。

考慮的對象集合的情況下,我們有一個抽象類稱爲類AbstractCollection,並呼籲列表具體類,我應該如何命名爲列表接口

的問題是,在Java的命名約定,沒有前綴,也不後綴的接口,如ListsInterfaceInterfaceLists

列表是一個接口名稱,顯然至少在PHP中,同一目錄中的兩個文件不能具有相同的類或接口名稱。

不是每個類都需要一個接口,我知道,但如果我決定轉向編程團隊呢?其他程序員可能會使用我的類,但不應該打開類文件以查看它提供的公共方法。

只要閱讀它的接口,一切都很清楚。

目錄結構點來自添加具有相同名稱的接口的子目錄的可能性,並在其內部具體類的文件。例如:

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

現在是什麼?

回答

1

你不應該給一個接口和一個類同名。決不。爲了你的讀者。

我認爲你的特定問題與約定無關,但具體的命名問題Lists聽起來不像一個接口。 List呢。但是在這種情況下,實現類將具有更具體的名稱,如List_DoublyLinkedList_SinglyLinked(或您所談論的任何類型的列表)。

+0

我知道。但我認爲這將是相反的。列表(複數)表示接口,因爲實現它的所有內容都將是單個List(單數)。特別是我不喜歡這些ClassesWithVeryLongName:P –

+0

@BrunoAugusto ClassesWithVeryLongNames是一件好事。它們是描述性的。如果您使用的是名稱空間代碼,您仍然可以在代碼中使用較短的名稱引用它們,方法是定義別名;) – NikiC

+0

滾動字體的旁註 - 像我一樣滾動 - 使用字面名稱「List」來標識任何定義將失敗對「名單」一詞的保留;相當不幸。 – Dan

1

我想你應該檢查PHP命名約定而不是Java。

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

Zend公司提供了一個很好的,幾乎考慮了所有的情況。

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

爲了表明一個接口是一個接口,Zend強制你在你的接口上加一個後綴。所以你的dir結構應該是這樣的:

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

我不知道這篇文章是否回答你的問題,但我希望它有幫助。

+0

在最近幾天我閱讀了幾個命名約定,Java是我能找到的最優雅的。我試圖避免這樣的前綴(或後綴),但我目前還沒有運氣。 :( –