Философия underscore для именования списков
Invite pending
Если максимально кратко, то вместо children следует писать child_ и leaf_ вместо leaves. Но это не точно :)
В качестве основного фреймворка для бека наша команда использует Laravel, в котором, если переменная содержит массив или коллекцию из нескольких элементов, то по соглашению имя переменной должно быть во множественном числе. Например, переменная с массивом пользователей должна именоваться $users. Вполне удобный вариант именования на первый взгляд. Но копнем поглубже. Не зря же в заголовке присутствует слово «философия».
В английской грамматике множественное значение часто формируется не просто прибавлением s. Например child и его множественное число children или leaf и leaves. При рассмотрении под таким углом соглашение именования уже не кажется таким идеальным. Вместо написания кода приходится изучать грамматику. Мне как человеку которому еще в школе привили стойкую ненависть к инглишу это в тягость, а для того меня, который перфекционист это сущий ад :)
Есть вариант именования с добавлением List к переменной, но для его набора приходится тянуться мизинцем к клавише shift и он состоит из 4 символов. Для того меня, который лентяй этот вариант слишком избыточен по трудозатратам.
Начертание s плохо различимо для глаза, что приводит к неявным ошибкам в языках с динамической типизацией. Dimension и Dimensions плохо различимы при беглом взгляде, так же легко спутать эти переменные при автокомплите.
Часто встречается такой код:
И внутри строчек 30 кода и 10 использований переменной $dimension. При стандартном соглашении именования высока вероятность спутать переменные, но $dimension_ и $dimension различимы максимально четко.
Множественные же значения без s приводят к более детальному вчитыванию в код и его осмыслению (child и children). Но child и child_ отлично читается и не приводит к дополнительному осмыслению. Все максимально просто и интуитивно для понимания. Есть и исключения, у которых обе формы пишутся одинаково sheep, deer. Маловероятно что такие переменные будут использоваться в коде на реальном проекте, но факт есть факт.
После обдумывания всего вышесказанного было принято гениальное решение взять лучшее от обоих подходов. Краткость от s и единообразие от List. Так родилась «философия underscore» — именование в единственном числе с добавлением _ в конце.
Мой внутренний лентяй был на седьмом небе от счастья: всего один символ при наборе который отлично различим даже при беглом взгляде с бодуна. :) Перфекционист тоже был крайне доволен единообразием. Ну а я был доволен что, придумал что-то настолько простое, что возможно даже гениальное. :)
Для именования методов этот подход тоже мне понравился. Часто встречается метод для получения/добавления объекта и массива объектов. Через именование подчеркиванием это решается просто и красиво.
А какие бунтарские идеи по именованию переменных и не только приходили вам в голову? :)
В качестве основного фреймворка для бека наша команда использует 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» — именование в единственном числе с добавлением _ в конце.
Мой внутренний лентяй был на седьмом небе от счастья: всего один символ при наборе который отлично различим даже при беглом взгляде с бодуна. :) Перфекционист тоже был крайне доволен единообразием. Ну а я был доволен что, придумал что-то настолько простое, что возможно даже гениальное. :)
Для именования методов этот подход тоже мне понравился. Часто встречается метод для получения/добавления объекта и массива объектов. Через именование подчеркиванием это решается просто и красиво.
А какие бунтарские идеи по именованию переменных и не только приходили вам в голову? :)