Соглашения об именах или структура каталогов - PullRequest
0 голосов
/ 27 октября 2011

Я программист PHP, но то, что я хочу обсудить, зависит от Java.

После прочтения некоторых статей о венгерских соглашениях по обозначениям и именам на нескольких языках я доказал, насколько ясны соглашения об именах в Java для интерфейсов, у меня один вопрос.

Рассматривая случай с коллекциями объектов, когда у нас есть абстрактный класс с именем AbstractCollection и конкретный класс с именем Lists , как мне назвать Interface для Списки

Вопрос в том, что в соглашениях об именах Java нет префикса или суффикса для интерфейсов, таких как ListsInterface или InterfaceLists .

Списки - это имя интерфейса и, очевидно, по крайней мере, в PHP, два файла в одном каталоге не могут иметь одно и то же имя класса или интерфейса.

Не знаю, что КАЖДОМУ классу нужен Интерфейс, но что, если я решу перейти в команду программистов? Другие программисты могут использовать мои классы, но им не следует открывать файлы классов, чтобы увидеть, какие публичные методы они предлагают.

Просто прочитав его интерфейс, все понятно.

Точка структуры каталогов возникла из-за возможности добавить подкаталог с тем же именем интерфейса и внутри него файл конкретного класса. E.g.:

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

Что теперь?

Ответы [ 2 ]

1 голос
/ 27 октября 2011

Я думаю, вы должны проверить соглашения об именах в 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 заставляет вас добавлять суффикс в ваши взаимодействия.Итак, ваша структура dir должна выглядеть следующим образом:

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

Я не знаю, отвечает ли этот пост на ваш вопрос, но я надеюсь, что это поможет.

1 голос
/ 27 октября 2011

Вы не должны давать интерфейсу и классу одно и то же имя.Никогда.Ради ваших читателей.

Я думаю, что ваша конкретная проблема не имеет ничего общего с соглашением, но с конкретной проблемой именования Lists совсем не похоже на интерфейс.List делает.Но в этом случае реализующий класс будет иметь более конкретное имя, например List_DoublyLinked и List_SinglyLinked (или любой другой список, о котором вы говорите).

...