Умовні позначення або каталог Strucure

Я PHP програміст, але те, що я хочу обговорити, залежить від Java.

Після прочитання деяких статей про Угорську нотацію і конвенції з імен декількох мов, я довів, наскільки чіткими є Конвенція про іменування Java для інтерфейсів.

Розглядаючи випадок об'єктів колекцій, де ми маємо абстрактний клас, що називається AbstractCollection , і конкретний клас, який називається Списки , як мені називати інтерфейс для Списки ?

Питання полягає в тому, що в конвенціях про іменування Java не існує префікса та суфікса для інтерфейсів, таких як ListsInterface або InterfaceLists .

Lists IS an Interface name and, obviously, at least in PHP, two files in same directory cannot have the same name of a class or interface.

Не кожен клас потребує інтерфейсу, я знаю, але що, якщо я вирішу перейти до команди програмістів? Інші програмісти можуть використовувати мої класи, але вони не повинні відкривати файли класів, щоб побачити, які публічні методи він пропонує.

Просто читаючи його інтерфейс, все зрозуміло.

Точка Структура Директорії виникла з можливості додати підкаталог з тим же ім'ям Інтерфейсу і, у ньому, файлу конкретного класу. Напр .:

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

Що тепер?

0

2 Відповіді

Ви не повинні давати інтерфейс і клас з однаковою назвою. Ніколи. Для ваших читачів.

Я думаю, що ваша особлива проблема має мало спільного з конвенцією, але з конкретною проблемою імен Lists не звучить як інтерфейс взагалі. Список . Але в цьому випадку реалізаційний клас матиме більш конкретне ім'я, наприклад List_DoublyLinked і List_SinglyLinked (або будь-який інший список, про який ви говорите).

1
додано
Я це знаю. Але я думаю, що це було б навпаки. Списки (множини) являють собою інтерфейс, оскільки все, що реалізується, буде єдиним списком (єдине число). Особливо мені не подобаються ці ClassesWithVeryLongName: P
додано Автор Bruno Augusto, джерело
Сторона-примітка для tumbleweeds прокатки, як я - використовуючи буквальне ім'я Список , щоб визначити будь-яке визначення не вдасться через резервування слова "список"; досить нещасний.
додано Автор Dan Lugg, джерело
@BrunoAugusto ClassesWithVeryLongNames - хороша річ. Вони описові. Якщо ви використовуєте код, на який поширюється імена, ви все одно можете посилатися на них, використовуючи коротші імена в коді, визначивши аліаси;
додано Автор NikiC, джерело

Я думаю, ви повинні перевіряти угоди про іменування PHP замість Java.

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

Zend забезпечує хороший, майже розглядаючи всі випадки.

Symfony має й інше ), Pear має інше ( http://pear.php.net/manual /en/standards.php ).

У вашому випадку, щоб показати, що інтерфейс є інтерфейсом, Zend змушує вас поставити суфікс на ваші інтерфаки. Отже, структура вашого реєстру повинна бути такою:

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

Я не знаю, чи відповідає ця публікація на ваше запитання, але я сподіваюся, що це допоможе.

1
додано
В останні дні я читав про кілька Угод про найменування, і Java була найбільш елегантною, яку я міг знайти. Я намагаюся уникнути подібних префіксів (або суфіксів), але поки що мені не пощастило. :(
додано Автор Bruno Augusto, джерело
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php

ІТ КПІ - Java
ІТ КПІ - Java
436 учасників