Pull to refresh

Философия 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» — именование в единственном числе с добавлением _ в конце.

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

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

А какие бунтарские идеи по именованию переменных и не только приходили вам в голову? :)
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.