Давно я прочитав статтю (я вважаю, що це запис у блозі), яка поставила мене на "правильний" шлях до іменування об'єктів: будьте дуже скрупульозні щодо називання речей у вашій програмі.
Наприклад , якщо моя заявка була (як типовий бізнес - додаток) обробки користувачів, компанії і адреси я є User
, Company
і в Address
клас домену - і , ймовірно , де - то UserManager
, CompanyManager
і AddressManager
буде спливав , який обробляє ці речі.
Тож чи можете ви сказати, що це робити UserManager
, CompanyManager
і AddressManager
робити? Ні, тому що "Менеджер" - це дуже загальний термін, який відповідає всім, що ви можете зробити з об'єктами вашого домену.
У статті, яку я прочитав, рекомендується використовувати дуже конкретні назви. Якщо це була програма C ++, а UserManager
завданням було виділення та звільнення користувачів із купи, вона не керувала б користувачами, а захищала їх народження та смерть. Хм, можливо, ми могли б це назвати UserShepherd
.
Або, можливо UserManager
, завдання полягає в тому, щоб перевірити дані кожного об'єкта користувача і підписати дані криптографічно. Тоді ми мали б UserRecordsClerk
.
Тепер, коли ця ідея застрягла у мене, я намагаюся її застосувати. І знайти цю просту ідею напрочуд важко.
Я можу описати, що роблять класи, і (доки я не ковзаю швидке та брудне кодування) класи, які я пишу, роблять точно одне . Що я сумую, щоб перейти від цього опису до імен, це своєрідний каталог імен, словник, який відображає поняття на імена.
Зрештою, я хотів би мати на увазі щось на зразок каталогу візерунків (часто шаблони дизайну легко надають назви об'єктів, наприклад, фабрика )
- Фабрика - створює інші об'єкти (називання, взяті за схемою дизайну)
- Вівчарка - вівчарка обробляє термін експлуатації об’єктів, їх створення та відключення
- Синхронізатор - копіює дані між двома або більше об'єктами (або ієрархіями об'єктів)
Няня - допомагає об'єктам досягти "зручного" стану після створення - наприклад, шляхом підключення до інших об'єктів
тощо.
Отже, як ви вирішуєте це питання? Чи є у вас фіксований словник, ви вигадуєте нові імена на льоту або вважаєте, що називати речі не дуже важливими чи неправильними?
PS: Мене також цікавлять посилання на статті та блоги, які обговорюють цю проблему. Для початку ось оригінальна стаття, яка змусила мене замислитися над цим: називання Java-класів без "менеджера"
Оновлення: підсумок відповідей
Ось невеличкий підсумок того, що я дізнався з цього питання тим часом.
- Намагайтеся не створювати нових метафор (Няня)
- Погляньте, що роблять інші рамки
Інші статті / книги на цю тему:
- Які імена ви вважаєте, що регулярно готуєтесь / відвідуєте заняття?
- Який найкращий підхід до іменування класів?
- Книга: Шаблони дизайну: Елементи багаторазового об’єктно-орієнтованого програмного забезпечення (тверда обкладинка)
- Книга: Шаблони архітектури прикладних програм підприємства (тверда обкладинка)
- Книга: Шаблони впровадження (М'яка обкладинка)
І поточний список іменних префіксів / суфіксів, які я зібрав (суб'єктивно!) З відповідей:
- Координатор
- Будівельник
- Письменник
- Читач
- Обробник
- Контейнер
- Протокол
- Ціль
- Перетворювач
- Контролер
- Вид
- Заводська
- Суб'єкт
- Відро
І хороша порада для дороги:
Не слід називати параліч. Так, імена дуже важливі, але вони недостатньо важливі для того, щоб витрачати величезну кількість часу. Якщо ви не можете придумати гарне ім’я за 10 хвилин, рухайтеся далі.