Как кодировать имена

Архитектура

источник:Энтерит 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. mod

    modПодобно аббревиатуре слова, вы можете не знать, что это такое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 в коде大写下划线连词стиль
    • Командные ограничения: Для одной и той же концепции в команде уже есть соответствующий заголовок, которому следует следовать, а не произвольно увлекать личные блага, такие как: прямая трансляция (ongoing vs living), был названongoing, или заменить наliving; замените их все или продолжайте использоватьongoing, хотя последнее точнее.
    • Ограничения кадра: использованиеShopify/saramaВ качестве клиента kafka вы должны использоватьConsumer,ConsumerGroup,ConsumerGroupHandler, назовите три уровня вместо того, чтобы писать три уровня самостоятельно:Dao,Consumer,Processor
  • выровненный, симметричный

    Выравнивание: имя пакета стандартной библиотеки 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 в проекте, будет подробно объяснено позже.

Кодировать слова непросто, если понравилось, поддержите, пожалуйста, трижды (лайк, комментарий, пересылка)!