Pull to refresh

Comments 31

Вот самые употребимые в js:

Шашлычная нотация (kebab-case): my-data

Тут падает желание читать дальше т.к. таких именований в JS быть не может (как и во многих других языках программирования), поскольку это будет расцениваться как: my(минус)data.

Также дальше идет предложение
В js на сегодняшний день snake_case и kebab-case не приняты

Которое противоречит «самые употребимые» из предыдущего

Между прочим, все верно описано. Может быть сумбурно, но верно.


В век до es6 очень часто в js писали имена атрибутов через дефис. data-id, data-name.
И кебаб-кейс еще присутствовал в css.


А вот с приходом фреймворков типа React, кебаб-кейс уже перестал быть важным. Никому не нужны data-attributes. Да и CSS-in-JS стал популярным, заменив background-color на backgroundColor.


О времена, о нравы!

имена атрибутов — до сих пор используются, и в кебаб-кейсе, не спорю. CSS свойства тоже в кебабе. Это стандартами задано и нет смысла обсуждать, да и css все таки хоть и тесно связан с браузерным js, но не часть его. И если я правильно понял статью, то она в первую очередь про именования переменных/классов/функций, в общем сущностей из кода.
Также эти кейсы можно встретить в легаси коде и много где ещё. Всё так критика должна бать обоснованной. Фраза вырванная из контекста не отражает суть повествования.

Покажите нам примеры легаси кода с кебаб-кейсом, пожалуйста.


Это невалидный синтаксис в js, так что это автоматически не может быть плохим стилем, но в это же время и спецификация того же css, вы обязаны это использовать, и, поэтому, это не опять не может быть плохим тоном.

Ну а змеиный кейс вполне можете встретить.

абзац выглядел вот так:
Существуют разные синтаксические формы наименования, их очень много, некоторые уже не употребляются. Вот самые употребимые в js:

Верблюжья нотация (CamelCase): MyClass
Змеиная нотация (snake_case): my_const
Шашлычная нотация (kebab-case): my-data

При выборе кейса важно учитывать принятый на текущий момент стандарт. В js на сегодняшний день snake_case и kebab-case не приняты, но их можно встретить например на Python или Ruby.


т.е. я описал кейсы, которые можно встретить в JS и далее пояснил, что сейчас принято в Js. Тот же кебаб активно применяется в наименовании DOM-шаблонов из-за нечувствительности html к регистру, но в нейминге функций и переменных его не используют.

kebab-case… можно встретить… на Python

И где тут всё верно?
За такое сразу садисьдва надо.

Я бы не сказал что прям так не популярны. Во vue например так и принято писать в параметрах компонента, да и сами компоненты тоже, например:

<some-component some-name="Some name"@some-event="someEvent" />

Самые употребимые кейсы, далее я рассказал, что в js применяется верблюжий кейс, а прочие нуне не применяются, но их можно встретить в других языках, например питон.

Извините, но если вы не дочитали, то это только ваш выбор.
А нельзя ли подробней рассказать про стандарты неймига для различных языков. Например, применима ли шашлычная нотация для всех LISP-подобных языков? Какая нотация применима для С, С++, C#?

В Си используются разные нотации в разных либах. Например, Microsoft, используют UpperCamelCase (CreateProcessA). В Unix используют либо camel case (set_mempolicy), либо чаще хрен пойми что (chmod, shmctl), при этом почти все слова сокращая и не используя заглавных букв.

При выборе кейса важно учитывать принятый на текущий момент стандарт. В js на сегодняшний день snake_case и kebab-case не приняты, но их можно встретить например на Python или Ruby.
Нейминг не имеет стандарта как такового. Все что описано в статье — это рекомендации, а не стандарт. Каждый решает для себя как именовать, придерживаться или нет рекомендаций. В корпоративной разработке могут быть свои правила именования, от которых обычно нельзя отклоняться.
Поэтому я и написал, что важно учитывать принятый на текущий момент стандарт.

О, а как мне в python'e обозвать переменную some-var?
На ус приходит только что нибудь эдакое из юникода, но это клиника.

Функции далеко не всегда являются действиями

Не соглашусь. Результат выполнения функций — не всегда действие, а сама функция всегда выполняет какое то действие, вернуть что либо — это тоже действие.
Такой нейминг примеров из статьи на мой взгляд более удачный:
defaultCollection > getDefaultCollection
arifmeticalProgression > getArifmeticalProgression


Глагол явно указывает на то, что в переменной функция и её можно вызвать

А для, например, синуса вы пишите свои обёртки типа getSinus? А для ФВП, возвращающих другие функции пишете getGetSomething?


Лично я в большинстве случаев против имён обычных функций с префиксами get, calc, do, transform, и т. п. — считаю их лёгким запашком по умолчанию.

Если говорить про частично примененный синус от какого то стейта, то почему бы и не написать getSinOfExecutionTime, не понимаю на чем экономить. Для ФВП есть вполне устоявшееся withSomething. Я говорил в контексте прикладного программирования, а не системного, где возможно разумно использовать другие рассуждения — тут не берусь судить конечно

Нет, не от стейта, обычная функция, методы отдельный разговор.


А withSomething это схема для декораторов обычно.

Тут речь о семантике кода. С точки зрения семантики функции могут выполнять некое действие(преобразование, отправку, изменение), а могут что-то возвращать(число, булево значение). И эти две разные ситуации именуются по разному.

Я бы не относил данные стандарты только к JS. Так как в Яве, плюсах, го и ещё пакет других языков тоже используются подобная практика.

На самом Деле с опытом это как то интуитивно выходит. Не зацикливался на этом никогда, но щас пробежался по коду (чисто стало интересно всему ли я следую) и все по канонам)
Но для новичков мб правда полезная инфа
Мне известны:
  • camelCase — первое слово начинается со строчной буквы, каждое следующее слово с заглавной буквы, слова пишутся слитно;
  • PascalCase — каждое слово начинается с заглавной буквы, слова пишутся слитно;
  • kebab-case — все буквы строчные, слова отделяются символом "-";
  • snake_case — все буквы строчные, слова отделяются символом "_";
  • UPPER_CASE_SNAKE_CASE — все буквы заглавные, слова отделяются символом "_".

Один из моих любимых языков позволяет использовать апостроф и пробелы, что удобно в модульных тестах.

Про lower camelCase слышу впервые. Можно ссылку на источник?

Не согласен с утверждением «Функции далеко не всегда являются действиями», поскольку в примере приводится пример чего-то похожего на ленивые генераторы и конструктор типа, которые обычно именуются в форме глагола. Не сталкивался с хорошим обоснованием именовать функции в форме существутельных. Пример с созданием коллекции по умолчанию в js выглядит как вредный совет, поскольку при каждом вызове такой функции будет каждый раз создаваться новый объект.
Зачастую создавать каждым вызом новый объект является хорошей практикой, т.к. сохраняет неизменяемость объектов. Имутабельность один из принципов ФП.

На тему lower camelCase. upper CamelCase это тотже PascalCase.
Интересно было бы посмотреть на именование переменных в кебаб-кейсе в JS.
Я привёл самые употребимые в программировании на 2020, а потом рассказал, что сейчас принято в js.
В общем, жаль, что статья людям не понравилась. Наверное не буду больше писать. Позитивного отклика у сообщества не вижу.
Sign up to leave a comment.

Articles