Стили написания составных слов в программировании

2
10727
views

Перевод статьи Чейза Адамса «Most Common Programming Case Types».

Стиль написания составных слов camelCase

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

Чтобы именование было успешным, самое главное – определиться со стилем написания составных слов. Это важно для поддержания последовательности в пределах одного проекта или рабочего пространства. Если вы занимаетесь созданием программного обеспечения, то в спецификации своего языка вы можете встретить указание на определенный стиль. Некоторые языки (в частности, Go) очень полагаются на ваше знание разницы между стилями и правильное их использование.

Прочитав эту статью, вы узнаете:

Самые распространенные стили написания составных слов:

  • Camel case
  • Snake case
  • Kebab case
  • Pascal case
  • Upper case (в сочетании со snake case).

Как их использовать в следующих ситуациях:

  • выбор названия файлов для компьютера (рекомендуемый мной подход)
  • программирование на Go
  • программирование на Ruby
  • программирование на JavaScript
  • программирование на Python

camelCase

camelCase должен начинаться со строчной буквы, а первая буква каждого последующего слова должна быть заглавной. Все слова при этом пишутся слитно между собой.

Пример camelCase для имени переменной camel case var – camelCaseVar.

snake_case

Чтобы писать в стиле snake_case, нужно просто заменить пробелы знаками подчеркивания. Все слова при этом пишутся строчными буквами. Можно использовать snake_case, смешивая его с camelCase и PascalCase, но, как по мне, при этом теряется сам смысл этого стиля.

Пример snake_case для имени переменной snake case var – snake_case_var.

kebab-case

kebab-case похож на snake_case, только в нем пробелы заменяются на дефисы. Слова также пишутся строчными буквами. Опять же, его можно смешивать с camelCase и PascalCase, но в этом нет смысла.

Пример kebab-case для переменной kebab case var – kebab-case-var.

PascalCase

В PascalCase каждое слово начинается с заглавной буквы (в отличие от camelCase, где первое слово начинается со строчной).

Пример PascalCase для переменной pascal case var – PascalCaseVar.

Примечание: этот стиль часто путают с camelCase, но это, тем не менее, отдельный стиль.

UPPER_CASE_SNAKE_CASE

В UPPER_CASE_SNAKE_CASE все слова пишутся заглавными буквами, а пробелы заменяются знаками подчеркивания.

Пример UPPER_CASE_SNAKE_CASE для переменной upper case snake case var – UPPER_CASE_SNAKE_CASE_VAR.

Выбор стиля написания имен

Как выбрать стиль написания составных слов?

Теперь, когда вы ознакомились с различными стилями, давайте рассмотрим примеры их использования для выбора названий файлов и для программирования на разных языках. Я буду указывать вариант, который, как мне кажется, является лучшим подходом.

Какого соглашения придерживаться, выбирая имена для файлов?

Совет: всегда snake_case

При выборе названий для файлов важно задавать вопрос: «Каков наименьший общий знаменатель?». Если у вас нет собственного мнения на этот счет, поделюсь своим опытом. Лучший результат у меня всегда получался при использовании snake_case. В этом случае название файла сохраняет читабельность и при этом вряд ли приведет к каким-либо проблемам в файловой системе.

Если вы пользуетесь Mac или работаете с пользователями Mac, будет хорошей идеей всегда использовать только строчные буквы. Файловая система Mac – HFS+, а поскольку она нечувствительна к регистру, то файлы «MyFile» и «myfile» не будут различаться.

Мой главный аргумент в пользу этого подхода связан с особенно коварным «багом», который я видел при запуске CI/CD (непрерывной интеграции/непрерывной доставки) кластера. Во время сборки проекта на React в работе CI возник сбой с сообщением «файл не найден: mycomponent.js». Разработчик божился, что этот файл был в исходниках проекта.

Я обнаружил, что они импортировали «mycomponenet.js», но файл назывался «MyComponent.js». Это ведь был проект на React, где для наименований компонентов файлов используется именно PascalCase. Поскольку HFS+ не различает регистры, файл «MyComponent.js» был успешно принят за «mycomponent.js», когда разработчик писал код (на Mac). Но когда выполнялась сборка на сервере CI (а он был на основе Unix), возник сбой, потому что система искала точное соответствие названия.

Соглашения Go

В Go критически важно быть внимательным к соглашениям о наименованиях. Этот язык определяет доступность переменной, поля или метода для вызова исходя из того, со строчной или заглавной буквы начинается имя.

  • PascalCase обязателен для экспортируемых полей и методов.
  • camelCase обязателен для внутренних полей и методов.
package casetypes

type ExportedStruct {
unexportedField string
}

В этом примере ExportedStruct доступен для пакетных вызовов для casetypes, а unexportedField доступен только для методов ExportedStruct.

Соглашения JavaScript

  • camelCase для переменных и методов.
  • PascalCase для типов и классов.
  • UPPER_CASE_SNAKE_CASE для констант.

Соглашения React

У меня довольно большой опыт программирования на React, к тому же он довольно уникален, поэтому заслуживает своего подраздела:

  • PascalCase используется для названий компонентов и файлов.

Соглашения Ruby

  • PascalCase используется для классов и модулей.
  • snake_case – для символов, методов и переменных.
  • UPPER_CASE_SNAKE_CASE – для констант.

Соглашения Python

Другие соглашения

  • kebab-case в Lisp.
  • kebab-case в HTTP URL (most-common-programming-case-types/).
  • snake_case в ключах свойств JSON.

Таблица для быстрого сравнения

Стиль написанияПример
Исходное написание имени переменнойsome awesome var
Camel CasesomeAwesomeVar
Snake Casesome_awesome_var
Kebab Casesome-awesome-var
Pascal CaseSomeAwesomeVar
Upper Case Snake Case SOME_AWESOME_VAR

Теперь, зная самые распространенные стили написания, вам будет легче определиться, какой использовать при написании своего кода!



2 КОММЕНТАРИИ

  1. На данный момент Apple используют файловую систему APFS, одно из ограничений — чувствительность к регистру символов.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here