Чистый код: имена классов?

Из «Чистого кода»:

Имена классов и объектов должны представлять собой существительные и их комбинации: Customer, WikiPage, Account и AddressParser. Старайтесь не использовать в именах классов такие слова как Manager, Processor, Data или Info.


Интересно, чем Мартина и компанию не устраивают Manager и Processor, но устраивает Parser? Слишком «общие» названия, не говорящие ничего о том, что конкретно делает класс?
  • Вопрос задан
  • 5978 просмотров
Пригласить эксперта
Ответы на вопрос 7
sainnr
@sainnr
Я думаю, что именно Parser их также не устраивает, как и Manager или Processor. В качестве допустимого названия, они приводят в пример AddressParser, т.е. парсер, применимый конкретно к адресу. Аналогично, были бы допустимы варианты, например, AccountManager или TemplateProcessor.
Ответ написан
Ogra
@Ogra
По слову Parser мне уже понятно, что делает класс — берет что-то большое (скорее всего, текст) и разбирает на небольшие составные части. Мне примерно понятно предназначение класса и его интерфейс.

А вот Manager/Processor/Data/Info… Слишком общие слова. Утрируя — вот класс DataProcessor — что он делает? Обрабатывает данные, подсказывает КО! Но какие данные? Каким образом обрабатывает?
Еще пример: AddressProcessor. Что делает этот класс? Он может приводить все адреса в один формат, может создавать граф для логистической программы, а может обрабатывать DNS записи.

Всегда можно найти более точную замену словам Manage/Process/Data/Info
Ответ написан
ixSci
@ixSci
Самое просто, это написать им e-mail и спросить их прямо. Думаю, они лучше смогут объяснить свою точку зрения, чем мы тут сейчас насочиняем.
Ответ написан
Комментировать
Согласно этой-же книге имя класса должно определять его сферу ответственности. Manager и Processor определяют слишком широкое поле ответственности. Parser — конкретное описание ответственности (разбор чего-то).
Ответ написан
ilyaplot
@ilyaplot
PHP программист
Видимо в его структуре Manager, Processor, Data и Info являются системными классами и не представляют собой объект данных. Видимо он хотел сказать, что нужно четко разделять данные и классы обработки данных.
Ответ написан
Комментировать
@korvindest
Manager, Processor, Data или Info действительно являются слишком общими словами. Manager, можно назвать практически любой класс, который хранит хоть какие данные или доступ к ресурсам. Точно так же и со всеми остальными словами из этого списка. А Info это вообще шедевр, который я неоднократно встречал в коде.
Например вместо того что бы называть класс NetworkConectionManager, можно обозвать его NetworkConections и это, на мой взгляд, будет нагляднее.
Ответ написан
Комментировать
andreycha
@andreycha Автор вопроса
Ответ нашелся сотней страниц позже:

Имя класса должно описывать его ответственности. [...] Если для класса не удается подобрать четкое, короткое имя, вероятно, он слишком велик. Чем туманнее имя класса, тем больше вероятность, что он имеет слишком много ответственностей. В частности, присутствие в именах классов слов-проныр «Processor», «Manager» и «Super» часто свидетельствуют о нежелательном объединении ответственностей.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы