Ответ 1
Популярное мнение о SO, похоже, заключается в том, чтобы избежать использования суффиксов, таких как Manager, Info, Helper или Util.
Смотрите: Имени зрелых классов и Имена классов, которые нуждаются в рефакторинге.
Я часто пытаюсь решить, как назвать класс. Не так много, потому что цель класса неясна, но из-за таких имен, как xxx *** Controller ***, xxx *** Manager ***, xxx *** Info ***, xxx *** Помощник ***, xxx *** Util *** и т.д., которые я вижу повсюду.
Если у меня есть класс, который загружает некоторые вещи через HTTP, я обычно называю его HttpUploader или что-то в этих строках. Я видел много примеров, когда аналогичный класс называется HttpUploadManager, HttpTransmissionController, HttpUploadHelper и т.д.
Я немного смущен, когда следует использовать Controller, Manager, Info и т.д. Есть ли какая-нибудь статья или книга, которые могут помочь мне стать лучшим пользователем классов?
PS: Кроме того, имя типа HttpSender звучит довольно анемично по сравнению с HttpTransmissionController или HttpDispatchManager: P
Популярное мнение о SO, похоже, заключается в том, чтобы избежать использования суффиксов, таких как Manager, Info, Helper или Util.
Смотрите: Имени зрелых классов и Имена классов, которые нуждаются в рефакторинге.
Именование трудно, поэтому не беспокойтесь, что вы боретесь, потому что все мы делаем. И поверьте мне, это никогда не становится проще!
Лично со всем контроллером/менеджером/помощником/Util/Независимо от суффикса я склонен использовать правило, которое, если это соглашение (например, для ASP.NET MVC это означает, что имя класса контроллера заканчивается на "Контроллере" ) затем используйте суффикс, иначе попробуйте, как ад, чтобы этого избежать. Я бы предпочел класс HttpUploader
, чем HttpUploadManager
.
Самое важное в названии - это то, что класс должен делать то, что он говорит. Если это класс, который загружает что-то с помощью HTTP, то HttpUploader
описывает его точно. Использование причудливого имени типа HttpUploadManager
не говорит мне, что он делает. Выгружает ли она сама вещь? Он управляет загрузкой нескольких вещей? Мне нравится держать все как можно проще, описывая цель класса/метода/независимо.
Хорошее руководство, которое я нахожу, состоит в том, что если вы действительно пытаетесь назвать что-то, например, вы тратите много времени на размышления, и вы по-прежнему не можете перегонять то, что он делает, в разумное имя, тогда вам, вероятно, придется реорганизовать все, что угодно "пытаюсь назвать более мелкие, более конкретные компоненты.
Если вам трудно выбрать имя, вы можете обратиться к ClassNamer.org.
Вы также можете посмотреть список более описательных (красочных?) суффиксов: ManagerManager.
Проблема с обычным советом (назовите класс для того, что он делает) состоит в том, что многие вещи, которые класс не имеет, имеют хороший эквивалент реального мира, и поэтому наш традиционный словарь может не соответствовать хорошо. Например, HttpUploader может быть сопряжен с другим классом, который помогает с загрузкой, выполняя некоторую координацию или (осмеливаясь сказать это?) Управляет загрузкой. Такая посредническая координация распространена в программном обеспечении, но слова, чтобы описать ее, настолько расплывчаты, что они приглашают презрение.
В книге Clean Code есть полная глава об именах переменных. Хороший материал.