Как стать автором
Обновить

Философия underscore для именования списков

Если максимально кратко, то вместо children следует писать child_ и leaf_ вместо leaves. Но это не точно :)

В качестве основного фреймворка для бека наша команда использует Laravel, в котором, если переменная содержит массив или коллекцию из нескольких элементов, то по соглашению имя переменной должно быть во множественном числе. Например, переменная с массивом пользователей должна именоваться $users. Вполне удобный вариант именования на первый взгляд. Но копнем поглубже. Не зря же в заголовке присутствует слово «философия».

В английской грамматике множественное значение часто формируется не просто прибавлением s. Например child и его множественное число children или leaf и leaves. При рассмотрении под таким углом соглашение именования уже не кажется таким идеальным. Вместо написания кода приходится изучать грамматику. Мне как человеку которому еще в школе привили стойкую ненависть к инглишу это в тягость, а для того меня, который перфекционист это сущий ад :)

Есть вариант именования с добавлением List к переменной, но для его набора приходится тянуться мизинцем к клавише shift и он состоит из 4 символов. Для того меня, который лентяй этот вариант слишком избыточен по трудозатратам.

Начертание s плохо различимо для глаза, что приводит к неявным ошибкам в языках с динамической типизацией. Dimension и Dimensions плохо различимы при беглом взгляде, так же легко спутать эти переменные при автокомплите.

Часто встречается такой код:

foreach ($dimension_ as $dimension){ ... }

И внутри строчек 30 кода и 10 использований переменной $dimension. При стандартном соглашении именования высока вероятность спутать переменные, но $dimension_ и $dimension различимы максимально четко.

Множественные же значения без s приводят к более детальному вчитыванию в код и его осмыслению (child и children). Но child и child_ отлично читается и не приводит к дополнительному осмыслению. Все максимально просто и интуитивно для понимания. Есть и исключения, у которых обе формы пишутся одинаково sheep, deer. Маловероятно что такие переменные будут использоваться в коде на реальном проекте, но факт есть факт.

После обдумывания всего вышесказанного было принято гениальное решение взять лучшее от обоих подходов. Краткость от s и единообразие от List. Так родилась «философия underscore» — именование в единственном числе с добавлением _ в конце.

Мой внутренний лентяй был на седьмом небе от счастья: всего один символ при наборе который отлично различим даже при беглом взгляде с бодуна. :) Перфекционист тоже был крайне доволен единообразием. Ну а я был доволен что, придумал что-то настолько простое, что возможно даже гениальное. :)

Для именования методов этот подход тоже мне понравился. Часто встречается метод для получения/добавления объекта и массива объектов. Через именование подчеркиванием это решается просто и красиво.

А какие бунтарские идеи по именованию переменных и не только приходили вам в голову? :)
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.