Абстрактні імена класів Java


9

Приклад:

Ви створюєте абстрактний клас для дій Ajax. Різні дії Ajax розширять цей клас.

Проблема:

  1. Ви називаєте клас AjaxAction або AbstractAjaxAction?
  2. Створюючи підкласи, чи називаєте їх:
    • Дія
    • AjaxAction
    • Просто назвіть їх, якими вони є

Я не зміг знайти, що таке "офіційна" конвенція. Я не бачу необхідності в префіксі "Анотація" або будь-якій необхідній умові іменування в підкласах. (Він може відповідати в будь-якому випадку, залежно.)

Чи існує офіційна конвенція? Не могли б ви пов’язати мене з цим? А які ваші думки з цього приводу?

Відповіді:


16

Коли це можливо, я намагаюся залишити деталі реалізації без імен, включаючи префікс / суфікс для абстрактного класу чи інтерфейсу.

Одне місце, де шукати настанови та натхнення щодо іменування - це Java API. Я не можу придумати жодної частини, яка використовує префікс (за величезним винятком є ​​API Collections, який сильно використовує префікс Анотація). Наступний пошук дасть кілька непоганих прикладів:

"громадський абстрактний клас" на сайті download.oracle.com/javase/6

Ви знайдете абстрактні класи, названі чимось абстрактними, а конкретні підкласи названі чимось більш конкретним. Наприклад, абстрактний клас Readerмає конкретні підкласи BufferedReader, StringReader, InputStreamReaderі т.д.

Оскільки ваші конкретні підкласи - це лише більш конкретні версії вашого абстрактного класу, то це має намір вибирати свої імена таким же чином. У вашому прикладі я б назвав абстрактний клас AjaxActionі використав би його в іменах для конкретних підкласів ( SpecificAjaxAction).


12

Виберіть щось та будьте послідовні. Незалежно від того, чи використовуєте ви суфікс Baseдля позначення призначеного базового класу, або префікса Abstract, просто дотримуйтесь цього.

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


4

Я б назвав абстрактні класи AjaxActionBaseдочірніх і суфіксних класів або "Дія", або "AjaxAction", залежно від того, що було б зрозуміліше для дій, необхідних для створення.


0

Я вважаю за краще підказати, що клас абстрактний в імені з однієї простої, але дуже важливої ​​причини:

  • Краще будувати свої API навколо інтерфейсів, а не абстрактних класів.
  • Ви хочете використовувати просте ім'я, наприклад, "Дія", щоб назвати свій інтерфейс. Дивіться, наприклад, Список або Карта в API Java Collections - все це інтерфейси.

Тому я б зазвичай називав абстрактний клас верхнього рівня або AbstractAction, або BaseAction. Якщо немає дуже специфічної потреби, я зазвичай не оприлюднюю їх, щоб користувачі коду керувались використанням інтерфейсу. Анотаційні базові класи, як правило, повинні бути деталізацією реалізації, а не особливістю вашого API, якщо ви не дуже обережні, як ви хочете, щоб люди розширювали їх.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.