0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>9 авг 2021</li>
2
<ul><li>9 авг 2021</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><h2>Нотации в программировании: верблюд, змея, шашлык и другие</h2>
4
</ul><h2>Нотации в программировании: верблюд, змея, шашлык и другие</h2>
5
<p>Пять способов соединить слова в одно длинное название - с вариациями и пояснениями.</p>
5
<p>Пять способов соединить слова в одно длинное название - с вариациями и пояснениями.</p>
6
<p>Анастасия Телесницкая для Skillbox Media</p>
6
<p>Анастасия Телесницкая для Skillbox Media</p>
7
<p>Фулстек-разработчик. Любимый стек: Java + Angular, но в хорошей компании готова писать хоть на языке Ада.</p>
7
<p>Фулстек-разработчик. Любимый стек: Java + Angular, но в хорошей компании готова писать хоть на языке Ада.</p>
8
<p>Часто для хорошего имени переменной или метода программистам не хватает одного слова. Например, название метода calculate, конечно, намекает на то, что в нём что-то вычисляется, но что конкретно - непонятно, нужны ещё слова.</p>
8
<p>Часто для хорошего имени переменной или метода программистам не хватает одного слова. Например, название метода calculate, конечно, намекает на то, что в нём что-то вычисляется, но что конкретно - непонятно, нужны ещё слова.</p>
9
<p>Проблема с языками программирования в том, что пробелы в названиях там недопустимы - нельзя назвать метод calculate elephant weight. Поэтому появились многочисленные варианты соединения слов с помощью изменения регистра букв или дописывания символов-разделителей.</p>
9
<p>Проблема с языками программирования в том, что пробелы в названиях там недопустимы - нельзя назвать метод calculate elephant weight. Поэтому появились многочисленные варианты соединения слов с помощью изменения регистра букв или дописывания символов-разделителей.</p>
10
<p>Соглашения об именовании переменных, констант и других идентификаторов в программном коде называют нотациями.</p>
10
<p>Соглашения об именовании переменных, констант и других идентификаторов в программном коде называют нотациями.</p>
11
<p>Расскажем, какие нотации существуют и для чего они используются.</p>
11
<p>Расскажем, какие нотации существуют и для чего они используются.</p>
12
<p><strong>О чём пойдёт речь:</strong></p>
12
<p><strong>О чём пойдёт речь:</strong></p>
13
<ul><li><a>Верблюжья нотация (сamel case, camelCase)</a></li>
13
<ul><li><a>Верблюжья нотация (сamel case, camelCase)</a></li>
14
<li><a>Нотация Паскаля (Pascal case, PascalCase)</a></li>
14
<li><a>Нотация Паскаля (Pascal case, PascalCase)</a></li>
15
<li><a>Змеиная нотация (snake case, snake-case)</a></li>
15
<li><a>Змеиная нотация (snake case, snake-case)</a></li>
16
</ul><ul><li><a>Шашлычная нотация (kebab case, kebab-case)</a></li>
16
</ul><ul><li><a>Шашлычная нотация (kebab case, kebab-case)</a></li>
17
<li><a>Плоская нотация (flat case, flatcase)</a></li>
17
<li><a>Плоская нотация (flat case, flatcase)</a></li>
18
<li><a>Как выбрать нотацию</a></li>
18
<li><a>Как выбрать нотацию</a></li>
19
</ul>Изображение: Rvector / Shutterstock / Skillbox Media<p>Первое слово пишется со строчной буквы, следующие - с заглавной, разделителей между составными частями нет. Торчащие посреди итогового названия заглавные буквы напомнили кому-то горбы верблюда - так возникло название нотации.</p>
19
</ul>Изображение: Rvector / Shutterstock / Skillbox Media<p>Первое слово пишется со строчной буквы, следующие - с заглавной, разделителей между составными частями нет. Торчащие посреди итогового названия заглавные буквы напомнили кому-то горбы верблюда - так возникло название нотации.</p>
20
<p><strong>Пример</strong></p>
20
<p><strong>Пример</strong></p>
21
<p>calculateElephantWeight</p>
21
<p>calculateElephantWeight</p>
22
<p>Используется во многих языках программирования для именования переменных, функций, методов - например, в Java, JavaScript, PHP. В языке Go в camelCase объявляют внутренние поля и методы.</p>
22
<p>Используется во многих языках программирования для именования переменных, функций, методов - например, в Java, JavaScript, PHP. В языке Go в camelCase объявляют внутренние поля и методы.</p>
23
<p><strong>Язык</strong><a><strong>Go</strong></a>вообще чувствителен к именам: от того, с какой буквы, строчной или заглавной, начинается имя переменной, зависит её область видимости - то, какие другие компоненты приложения смогут к этой переменной обратиться.</p>
23
<p><strong>Язык</strong><a><strong>Go</strong></a>вообще чувствителен к именам: от того, с какой буквы, строчной или заглавной, начинается имя переменной, зависит её область видимости - то, какие другие компоненты приложения смогут к этой переменной обратиться.</p>
24
<p>Для внутренних переменных подходит camelCase, а для публичных (экспортируемых) обязательно делать первую букву названия заглавной, то есть именовать в стиле PascalCase.</p>
24
<p>Для внутренних переменных подходит camelCase, а для публичных (экспортируемых) обязательно делать первую букву названия заглавной, то есть именовать в стиле PascalCase.</p>
25
Скриншот:<a>winworldpc.com</a><p>Тот же camelCase, но все слова, даже первое, начинаются с заглавной буквы.</p>
25
Скриншот:<a>winworldpc.com</a><p>Тот же camelCase, но все слова, даже первое, начинаются с заглавной буквы.</p>
26
<p><strong>Пример</strong></p>
26
<p><strong>Пример</strong></p>
27
<p>CalculateElephantWeight</p>
27
<p>CalculateElephantWeight</p>
28
<p>В таком стиле часто именуют классы (в Java, Python, JavaScript), а в программной платформе .NET - ещё и переменные.</p>
28
<p>В таком стиле часто именуют классы (в Java, Python, JavaScript), а в программной платформе .NET - ещё и переменные.</p>
29
<p>Стиль так называется вовсе не в честь Блеза Паскаля. Pascal case стал известным благодаря одному почти забытому языку Паскаль - в нём так именовались переменные, процедуры и функции.</p>
29
<p>Стиль так называется вовсе не в честь Блеза Паскаля. Pascal case стал известным благодаря одному почти забытому языку Паскаль - в нём так именовались переменные, процедуры и функции.</p>
30
<p>А вот язык Паскаль, кстати, назван Никлаусом Виртом, его создателем, как раз в честь великого француза.</p>
30
<p>А вот язык Паскаль, кстати, назван Никлаусом Виртом, его создателем, как раз в честь великого француза.</p>
31
<p>Иногда Pascal case называют upper camel case или, наоборот, camel case называют low Pascal case.</p>
31
<p>Иногда Pascal case называют upper camel case или, наоборот, camel case называют low Pascal case.</p>
32
<p>В XIX веке программирования ещё не было, зато уже были химия и химики. Один из них, некто Берцелиус, предложил в формулах веществ называть химические элементы одной или двумя буквами, а итог записывать в одно слово без пробелов. Причём первые буквы составляющих должны быть заглавными.</p>
32
<p>В XIX веке программирования ещё не было, зато уже были химия и химики. Один из них, некто Берцелиус, предложил в формулах веществ называть химические элементы одной или двумя буквами, а итог записывать в одно слово без пробелов. Причём первые буквы составляющих должны быть заглавными.</p>
33
<p>Благодаря этому прекрасному человеку мы до сих пор записываем формулу поваренной соли в виде NaCl, а не целиком Sodium Chloride или менее читабельно - NA CL.</p>
33
<p>Благодаря этому прекрасному человеку мы до сих пор записываем формулу поваренной соли в виде NaCl, а не целиком Sodium Chloride или менее читабельно - NA CL.</p>
34
Изображение: Rvector / Shutterstock / Skillbox Media<p>Слова разделяются символами подчёркивания - они как бы ползут по строке, в результате получается длииинное, как змея, название.</p>
34
Изображение: Rvector / Shutterstock / Skillbox Media<p>Слова разделяются символами подчёркивания - они как бы ползут по строке, в результате получается длииинное, как змея, название.</p>
35
<p><strong>Пример</strong></p>
35
<p><strong>Пример</strong></p>
36
<p>calculate_elephant_weight</p>
36
<p>calculate_elephant_weight</p>
37
<p>Используется, например, в языках Python и Rust для имён переменных и функций.</p>
37
<p>Используется, например, в языках Python и Rust для имён переменных и функций.</p>
38
<p>Если в предыдущем примере заменить все буквы на заглавные, то получится<strong>SCREAMING_SNAKE_CASE</strong>(кричащая змеиная нотация).</p>
38
<p>Если в предыдущем примере заменить все буквы на заглавные, то получится<strong>SCREAMING_SNAKE_CASE</strong>(кричащая змеиная нотация).</p>
39
<p>Эту вариацию чаще всего применяют для определения констант - в тех же Python и Rust, Java, PHP и многих других.</p>
39
<p>Эту вариацию чаще всего применяют для определения констант - в тех же Python и Rust, Java, PHP и многих других.</p>
40
<p>Кричащей её назвали, потому что в интернет-переписке переход на капс часто означает повышение градуса беседы и даже крик.</p>
40
<p>Кричащей её назвали, потому что в интернет-переписке переход на капс часто означает повышение градуса беседы и даже крик.</p>
41
<p><a>Исследование</a>Бониты Шариф и её коллег по Кентскому университету показало, что имена, разделённые подчёркиваниями, быстрее распознаются. Чтобы это доказать, учёные записывали движения глаз участников эксперимента, пока те читали названия в разных нотациях.</p>
41
<p><a>Исследование</a>Бониты Шариф и её коллег по Кентскому университету показало, что имена, разделённые подчёркиваниями, быстрее распознаются. Чтобы это доказать, учёные записывали движения глаз участников эксперимента, пока те читали названия в разных нотациях.</p>
42
Изображение: Rvector / Shutterstock / Skillbox Media<p>В этой нотации слова разделяют символом дефиса. При некоторой доле фантазии можно представить, что слова при этом как бы насаживают на шампур - вот и получается шашлык (kebab).</p>
42
Изображение: Rvector / Shutterstock / Skillbox Media<p>В этой нотации слова разделяют символом дефиса. При некоторой доле фантазии можно представить, что слова при этом как бы насаживают на шампур - вот и получается шашлык (kebab).</p>
43
<p><strong>Пример</strong></p>
43
<p><strong>Пример</strong></p>
44
<p>calculate-elephant-weight</p>
44
<p>calculate-elephant-weight</p>
45
<p>Примеры использования мы каждый день видим в URL-адресах, ещё kebab-имена дают CSS-стилям и HTML-тегам. В стайлгайде для Angular (фреймворк для веб-разработки) в kebab-нотации рекомендуют называть файлы компонентов, сервисов и других элементов приложения.</p>
45
<p>Примеры использования мы каждый день видим в URL-адресах, ещё kebab-имена дают CSS-стилям и HTML-тегам. В стайлгайде для Angular (фреймворк для веб-разработки) в kebab-нотации рекомендуют называть файлы компонентов, сервисов и других элементов приложения.</p>
46
<p>Существует kebab-case со всеми заглавными буквами - это<strong>SCREAMING-KEBAB-CASE</strong>(кричащая шашлычная нотация). Второе название такого стиля - COBOL_CASE, потому что в нём записывают все названия в языке COBOL. Это старый, но очень<a>живучий</a>язык.</p>
46
<p>Существует kebab-case со всеми заглавными буквами - это<strong>SCREAMING-KEBAB-CASE</strong>(кричащая шашлычная нотация). Второе название такого стиля - COBOL_CASE, потому что в нём записывают все названия в языке COBOL. Это старый, но очень<a>живучий</a>язык.</p>
47
<p>Проблема с этой нотацией в том, что знак дефиса можно интерпретировать как минус. Так что, если поставить этот разделитель не там, можно получить весёлые и странные баги.</p>
47
<p>Проблема с этой нотацией в том, что знак дефиса можно интерпретировать как минус. Так что, если поставить этот разделитель не там, можно получить весёлые и странные баги.</p>
48
<p>Чтобы получить наименование в этом стиле, нужно просто записать слова рядом без пробелов, все буквы каждого слова должны быть строчными.</p>
48
<p>Чтобы получить наименование в этом стиле, нужно просто записать слова рядом без пробелов, все буквы каждого слова должны быть строчными.</p>
49
<p><strong>Пример</strong></p>
49
<p><strong>Пример</strong></p>
50
<p>calculateelephantweight</p>
50
<p>calculateelephantweight</p>
51
<p>Переменные, классы и другие элементы программ обычно так не называют - их будет сложно разделить на слова при чтении, особенно если слов больше двух, как в примере. Зато плоская нотация встречается в именах пакетов. В Java, например, можно создать пакет com.example.flatcase.mypackage.</p>
51
<p>Переменные, классы и другие элементы программ обычно так не называют - их будет сложно разделить на слова при чтении, особенно если слов больше двух, как в примере. Зато плоская нотация встречается в именах пакетов. В Java, например, можно создать пакет com.example.flatcase.mypackage.</p>
52
<p>Но чаще всего такого рода длинные надписи мы видим в соцсетях - #этожеобычнаяпрактикадлятегов :)</p>
52
<p>Но чаще всего такого рода длинные надписи мы видим в соцсетях - #этожеобычнаяпрактикадлятегов :)</p>
53
<p>Лучшей нотации на все случаи жизни не существует. Для разных языков программирования есть разные соглашения о наименованиях - это свод правил с рекомендациями, какие имена стоит выбирать для разных элементов программы (переменных, классов, методов и тому подобного). Например,<a>здесь</a>такого рода соглашения для Python, а <a>здесь</a> - для Java.</p>
53
<p>Лучшей нотации на все случаи жизни не существует. Для разных языков программирования есть разные соглашения о наименованиях - это свод правил с рекомендациями, какие имена стоит выбирать для разных элементов программы (переменных, классов, методов и тому подобного). Например,<a>здесь</a>такого рода соглашения для Python, а <a>здесь</a> - для Java.</p>
54
<p>Обычно разработчики придерживаются этих общепринятых рекомендаций, но никто не запрещает IT-компаниям устанавливать свои правила, если они не противоречат синтаксису языка. В таком случае лучше соблюдать местные соглашения - если, конечно, вы хотите задержаться в этой компании :-)</p>
54
<p>Обычно разработчики придерживаются этих общепринятых рекомендаций, но никто не запрещает IT-компаниям устанавливать свои правила, если они не противоречат синтаксису языка. В таком случае лучше соблюдать местные соглашения - если, конечно, вы хотите задержаться в этой компании :-)</p>
55
<p>Мы на наших курсах не своевольничаем - учим называть переменные по всем канонам языка: будь то <a>Java</a>,<a>C#</a>, популярный сейчас<a>R</a>или другие из нашего<a>каталога курсов</a>. Бонусом к правилам наименования - навыки программирования на выбранном языке, а потом и помощь в трудоустройстве.</p>
55
<p>Мы на наших курсах не своевольничаем - учим называть переменные по всем канонам языка: будь то <a>Java</a>,<a>C#</a>, популярный сейчас<a>R</a>или другие из нашего<a>каталога курсов</a>. Бонусом к правилам наименования - навыки программирования на выбранном языке, а потом и помощь в трудоустройстве.</p>
56
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
56
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>