HTML Diff
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>