источник:Энтерит Ningsun.com/07-04-2020/…
В компьютерных науках есть только две сложные вещи: аннулирование кэша и присвоение имен объектам (Фил Карлтон).
предисловие
Разработчики обычно говорят о дизайне, архитектуре и микросервисах, но редко обращают внимание на то, насколько дизайн и архитектура полностью реализованы в самом коде. Хотя архитектура и дизайн важны, код не менее важен. в видеRobert C.MartinСказал: "Код — это дизайнБлагодаря хорошему коду вы можете увидеть красивый дизайн, стоящий за ним.
Хороший код, первый шаг — дать каждому классу, функции, переменной хорошее имя. К сожалению, большинство людей не знают, как придумать хорошее имя. В конце концов, именование не является строго областью информатики. Удачное называние слова может просто, ярко и интуитивно показать его функцию и даже его принцип, например:
-
SYN flood: поток SYN-запросов
-
Pipeline: передавать данные как по каналу, последовательно и в одном направлении
Вышеупомянутое — это просто область решения проблем, а не самая сложная. Самое сложное заключается в том, что в реальных исследованиях и разработках нам приходится сталкиваться с областью анализа проблем. Если структура и уровень вашего мышления неясны, а различные абстрагированные состояния не ортогональны, накладываются и пересекаются друг с другом, если вы придумаете в это время лучшее название, вы будете беспомощны; если вы не знаете как вещь должна называться, вы не можете знать, что это такое (A Rose by Any Other Name Will End Up As a Cabbage), поэтому процесс именования — это также процесс сортировки идей.
Согласно обобщению прошлого опыта, именование можно разделить на три уровня, первые два уровня охватывают дилемму Пространства решений, а последний уровень охватывает дилемму Пространства проблем.
- Уровень 1: Плохой запах, плохой запах, чтобы осознать необходимость перемен
- Уровень 2: Навыки именования, некоторые простые навыки именования, понимание того, какие каналы можно улучшить.
- Уровень 3: язык домена, способ именования, именование может систематически переходить от бизнеса к исследованиям и разработкам.
Уровень 1: плохой вкус
-
бессмысленное наименование
i.e.
data,info,record -
абстрактное наименование
i.e.
data,object,helper,tool,manager,processor,handler,maker,util,conf,thing,info,amount,details,do,execute,perform,operate,manage,handleНедостаточно точно, конечно, вы называли данные и объекты, но вы бы знали это и без этого расплывчатого имени. будет
dataПереименуйте во что-то более описательное, чтобы идентифицировать данные -
короткое имя
i.e.
modmodПодобно аббревиатуре слова, вы можете не знать, что это такоеmodeилиmodule -
нечеткий
i.e.
ManagerНеоднозначное название, кто знает, что на самом деле делает менеджер? Могут быть более осмысленные альтернативы, такие как: пастухи (Herder),директор(Supervisor),планировщик(Planner),Строители(builder)
-
несколько слов
i.e.
company_personпредставитель компанииПереименовать
company_personзаstaffболее подходящим, или обновить шагemployeeилиdirector -
пассивный залог
i.e.
PlanEventsПереименовать
PlanEventsактивный языкEventPlannerлучше или даже дальшеScheduler
Уровень 2: Навыки именования
улучшить словарный запас
Именование — это только часть письма, в основном словарного запаса. Возможно, вы помните, что частью изучения иностранного языка является пополнение словарного запаса. Отсутствие необходимости учить иностранный язык имеет как плюсы, так и минусы.
- Читайте открытый исходный код, базовый код библиотеки
- Например: ядро Linux, библиотека C++ STL и т. д.
- Найдите концепции, связанные с бизнесом
- Например, складской отдел:
sku( Складской отдел ); сокращение поиска:qv(Query View Count)
- Например, складской отдел:
лучшее название
-
Следуйте соглашениям и стандартам
Не используй
identifier, но используйте отраслевые соглашенияidИменуется как уникальный идентификатор. похожий:-
ptrзаpointerаббревиатура; -
i,j,kЧасто идеальное имя переменной количества циклов. -
size,capacity,resize,reserve,push,pop,top,back, как интерфейс контейнера, был опробован и протестирован. Для настройки контейнера не следует использоватьGetSizeи т.д.
-
-
Соблюдайте ограничения
- Языковые ограничения: например, язык Go использует
驼峰стиль, не используйте язык C в коде大写下划线连词стиль - Командные ограничения: Для одной и той же концепции в команде уже есть соответствующий заголовок, которому следует следовать, а не произвольно увлекать личные блага, такие как: прямая трансляция (
ongoingvsliving), был названongoing, или заменить наliving; замените их все или продолжайте использоватьongoing, хотя последнее точнее. - Ограничения кадра: использованиеShopify/saramaВ качестве клиента kafka вы должны использовать
Consumer,ConsumerGroup,ConsumerGroupHandler, назовите три уровня вместо того, чтобы писать три уровня самостоятельно:Dao,Consumer,Processor
- Языковые ограничения: например, язык Go использует
-
выровненный, симметричный
Выравнивание: имя пакета стандартной библиотеки Golang, httptest, httputil, httptrace
Симметрия: типичная симметрия,
producer/consumer,begin/end,create/destory,destination/source,get/release,increment/decrement,insert/delete,next/previous,old/new,old/new,open/close,put/get,show/hide,start/stop,target/source,
Уровень 3: доменный язык
Человеческие реакции на имена подсознательны... поэтому, если есть сомнения относительно имени, может быть трудно точно сформулировать, почему. Именование нашей дизайн-системы должно работать, как и ожидалось. … но чьи ожидания? Все заинтересованные стороны, заинтересованные стороны системы, включая, но не ограничиваясь:
- менеджер по продукту
- Разработка (frontend, backend, клиент)
- контрольная работа
- Пользователь
Код должен автоматически использовать то же имя, что и бизнес-модель или модель заявления. Например, если туристический бизнес использует "venue" в качестве общего названия для кафе, отелей и туристических достопримечательностей, используйте "place"плохая идея
- Один, потому что используются два разных языка, что усложняет общение
- Во-вторых, если словарный запас может быть интуитивно понят учащимися, которые не разбираются в разработке программного обеспечения, такими как менеджеры по продукту и пользователи, то такое наименование будет хорошим названием.
- В-третьих, свяжите кодовое наименование с моделью предметной области, и все именование согласуется с бизнесом.
- В-четвертых, с итерацией требований при полировке модели предметной области можно гарантировать, что наименование может быть реконструировано в соответствии с семантикой, сохраняяЧансинь
Унификация процесса разработки с использованием доменного языка может фундаментально объяснить происхождение и обоснование именования. По сравнению с общими навыками он систематически поддерживается теорией. Если навыки являются продуктом инженерии, то именование справочника по доменному языку похоже на продукт ученых.
Как реализовать DDD в проекте, будет подробно объяснено позже.
Кодировать слова непросто, если понравилось, поддержите, пожалуйста, трижды (лайк, комментарий, пересылка)!