верблюжий регистр что это
CamelCase
Примеры
Примеры CamelCase-написания: BackColor, backColor, CamelCase.
Иногда встречаются также следующие названия этого стиля:
Различают два варианта CamelCase-написания в зависимости от того, прописная или строчная первая буква: UpperCamelCase (PascalCase) и lowerCamelCase.
Применение
CamelCase широко используется в языках программирования:
Использование CamelCase стиля в коде программы определяется личным вкусом программиста, если проект невелик по размеру. В крупных проектах, как правило, существует специальный документ, определяющий правило создания имён (переменных, функций, констант и проч.) для всех участников проекта.
Некоторые среды разработки (например, Qt Creator) предоставляют возможность автозаполнения по заглавным буквам при использовании CamelCase (sCM → setContentMargins).
Принято считать альтернативным способом создания имён в программном коде стиль_через_подчёркивание (или через-дефисы, в Лиспе). Тем не менее стили можно смешивать (например: среднее_КоличествоЯблок), поскольку стили создания имён всего лишь условная договорённость и никак не влияют на работу программы.
Собственно стили появились из-за того, что в коде программы желательно иметь осмысленные имена переменных (описывающие смысл содержащегося в переменной значения), но не слишком длинные, а правила синтаксиса языков программирования налагают ограничения на средства для создания имён (к примеру, в большинстве языков допускается использование только буквенных символов, цифр и знака подчёркивания).
В некоторых wiki-движках используются CamelCase-ссылки (текст в CamelCase-стиле автоматически отображается как ссылка на другую wiki-страницу). К таким движкам относятся, например, MoinMoin, TWiki, JSPWiki и FlexWiki.
См. также
Типографика | |||||||
---|---|---|---|---|---|---|---|
Страница | Колонка [ru] · Колонтитул · Колонцифра · Пагинация · Поле [ru] · Принципы композиции страницы [ru] · Разворот | ||||||
Абзац | Вгонка и выгонка · Висячая строка · Выключка · Интерлиньяж · Коридор · Трекинг | ||||||
Символ | Апрош · Астеризм · Базовая линия · Буквица · Верхний индекс · Выносные элементы · Глиф · Диакритические знаки · Капитель · Кернинг · Лигатура · Маюскул · Микротипографика · Минускул · Минускульные цифры · Нижний индекс · Символьный шрифт · CamelCase · x-высота [ru] | ||||||
Классификация шрифтов |
| ||||||
Начертание шрифта | Жирный шрифт · Курсив · Наклонный шрифт [ru] | ||||||
Пунктуация | Висячая пунктуация [ru] · Кавычки · Перенос · Тире · Штрих | ||||||
Вёрстка | Высокая печать · Гарнитура · Глубокая печать · Каллиграфия · Наборный шрифт · Линотип · Офсетная печать · Панграмма · Плоская печать · Ручной набор · Словолитня · Фотонабор · Шрифт · Шрифтовой дизайн [ru] · ETAOIN SHRDLU · Lorem ipsum · Ротационная печатная машина | ||||||
Единицы измерения | Мера [ru] · Пика [ru] · Пункт · Узкий пробел [ru] · Цифровой пробел [ru] · Em [ru] · En [ru] | ||||||
Типографские кегли | Агат · Боргес · Бриллиант · Двойное цицеро · Двойной миттель · Диамант · Империал · Квадрат · Корпус · Крупный канон · Малый канон · Миньон · Миттель · Нонпарель · Парангон · Перл · Петит · Реал · Санспарель · Текст · Терция · Цицеро | ||||||
Компьютерная типографика | Компьютерная вёрстка · Компьютерный шрифт · Набор символов · Настольное издательское ПО [ru] · Растеризация · Хинтинг · ClearType |
Полезное
Смотреть что такое «CamelCase» в других словарях:
Camelcase — sur un panneau de direction (les mots champions et gate sont mis bout à bout et le second commence par une majuscule pour marquer la séparation) CamelCase (littéralement : casse de chameau) est un terme anglais utilisé dans l informatique et … Wikipédia en Français
CamelCase — (or camel case), also known as medial capitals,[1] is the practice of writing compound words or phrases in which the elements are joined without spaces, with each element s initial letter capitalized within the compound and the first letter… … Wikipedia
CamelCase — sur un panneau de direction (les mots champions et gate sont mis bout à bout et le second commence par une majuscule pour marquer la séparation) CamelCase (littéralement : « casse de chameau ») est un terme anglais utilisé dans l… … Wikipédia en Français
CamelCase — es la práctica de escribir frases o palabras compuestas eliminando los espacios y poniendo en mayúscula la primera letra de cada palabra. El nombre viene del parecido de estas mayúsculas, entre las demás letras, con las jorobas de los camellos.… … Enciclopedia Universal
CamelCase — Binnenmajuskel in der Werbung Binnenmajuskel (die, Plural Binnenmajuskeln) oder Binnenversal, auch Binnenversalie, nennt man einen Großbuchstaben (Versalie, Majuskel) im Wortinnern (Binnen ). Eine Sonderform, die Auszeichnung der einzelnen… … Deutsch Wikipedia
Camelcase — Binnenmajuskel in der Werbung Binnenmajuskel (die, Plural Binnenmajuskeln) oder Binnenversal, auch Binnenversalie, nennt man einen Großbuchstaben (Versalie, Majuskel) im Wortinnern (Binnen ). Eine Sonderform, die Auszeichnung der einzelnen… … Deutsch Wikipedia
CamelCase — Ejemplo de CamelCase en un indicador. CamelCase es un estilo de escritura que se aplica a frases o palabras compuestas. El nombre se debe a que las mayúsculas a lo largo de una palabra en CamelCase se asemejan a las jorobas de un camello. El… … Wikipedia Español
CamelCase — noun the practice of writing compound words with internal majuscules … Wiktionary
Casse de chameau — CamelCase CamelCase sur un panneau de direction (les mots champions et gate sont mis bout à bout et le second commence par une majuscule pour marquer la séparation) CamelCase (littéralement : casse de chameau) est un terme anglais utilisé… … Wikipédia en Français
ChatMot — CamelCase CamelCase sur un panneau de direction (les mots champions et gate sont mis bout à bout et le second commence par une majuscule pour marquer la séparation) CamelCase (littéralement : casse de chameau) est un terme anglais utilisé… … Wikipédia en Français
Нотации в программировании: верблюд, змея, шашлык и другие
Пять способов соединить слова в одно длинное название — с вариациями и пояснениями.
Анастасия Телесницкая для Skillbox Media
Часто для хорошего имени переменной или метода программистам не хватает одного слова. Например, название метода calculate, конечно, намекает на то, что в нём что-то вычисляется, но что конкретно — непонятно, нужны ещё слова.
Проблема с языками программирования в том, что пробелы в названиях там недопустимы — нельзя назвать метод calculate elephant weight. Поэтому появились многочисленные варианты соединения слов с помощью изменения регистра букв или дописывания символов-разделителей.
Соглашения об именовании переменных, констант и других идентификаторов в программном коде называют нотациями.
Расскажем, какие нотации существуют и для чего они используются.
Фулстек-разработчик. Любимый стек: Java + Angular, но в хорошей компании готова писать хоть на языке Ада.
Верблюжья нотация (сamel case, camelCase)
Первое слово пишется со строчной буквы, следующие — с заглавной, разделителей между составными частями нет. Торчащие посреди итогового названия заглавные буквы напомнили кому-то горбы верблюда — так возникло название нотации.
Используется во многих языках программирования для именования переменных, функций, методов — например, в Java, JavaScript, PHP. В языке Go в camelCase объявляют внутренние поля и методы.
Язык Go вообще чувствителен к именам: от того, с какой буквы, строчной или заглавной, начинается имя переменной, зависит её область видимости — то, какие другие компоненты приложения смогут к этой переменной обратиться.
Для внутренних переменных подходит camelCase, а для публичных (экспортируемых) обязательно делать первую букву названия заглавной, то есть именовать в стиле PascalCase.
Нотация Паскаля (Pascal case, PascalCase)
Тот же camelCase, но все слова, даже первое, начинаются с заглавной буквы.
Стиль так называется вовсе не в честь Блеза Паскаля. Pascal case стал известным благодаря одному почти забытому языку Паскаль — в нём так именовались переменные, процедуры и функции.
А вот язык Паскаль, кстати, назван Никлаусом Виртом, его создателем, как раз в честь великого француза.
Иногда Pascal case называют upper camel case или, наоборот, camel case называют low Pascal case.
В XIX веке программирования ещё не было, зато уже были химия и химики. Один из них, некто Берцелиус, предложил в формулах веществ называть химические элементы одной или двумя буквами, а итог записывать в одно слово без пробелов. Причём первые буквы составляющих должны быть заглавными.
Благодаря этому прекрасному человеку мы до сих пор записываем формулу поваренной соли в виде NaCl, а не целиком Sodium Chloride или менее читабельно — NA CL.
Змеиная нотация (snake case, snake-case)
Слова разделяются символами подчёркивания — они как бы ползут по строке, в результате получается длииинное, как змея, название.
Используется, например, в языках Python и Rust для имён переменных и функций.
Если в предыдущем примере заменить все буквы на заглавные, то получится SCREAMING_SNAKE_CASE (кричащая змеиная нотация).
Эту вариацию чаще всего применяют для определения констант — в тех же Python и Rust, Java, PHP и многих других.
Кричащей её назвали, потому что в интернет-переписке переход на капс часто означает повышение градуса беседы и даже крик.
Исследование Бониты Шариф и её коллег по Кентскому университету показало, что имена, разделённые подчёркиваниями, быстрее распознаются. Чтобы это доказать, учёные записывали движения глаз участников эксперимента, пока те читали названия в разных нотациях.
Шашлычная нотация (kebab case, kebab-case)
В этой нотации слова разделяют символом дефиса. При некоторой доле фантазии можно представить, что слова при этом как бы насаживают на шампур — вот и получается шашлык (kebab).
Примеры использования мы каждый день видим в URL-адресах, ещё kebab-имена дают CSS-стилям и HTML-тегам. В стайлгайде для Angular (фреймворк для веб-разработки) в kebab-нотации рекомендуют называть файлы компонентов, сервисов и других элементов приложения.
Существует kebab-case со всеми заглавными буквами — это SCREAMING-KEBAB-CASE (кричащая шашлычная нотация). Второе название такого стиля — COBOL_CASE, потому что в нём записывают все названия в языке COBOL. Это старый, но очень живучий язык.
Проблема с этой нотацией в том, что знак дефиса можно интерпретировать как минус. Так что, если поставить этот разделитель не там, можно получить весёлые и странные баги.
Плоская нотация (flat case, flatcase)
Чтобы получить наименование в этом стиле, нужно просто записать слова рядом без пробелов, все буквы каждого слова должны быть строчными.
Переменные, классы и другие элементы программ обычно так не называют — их будет сложно разделить на слова при чтении, особенно если слов больше двух, как в примере. Зато плоская нотация встречается в именах пакетов. В Java, например, можно создать пакет com.example.flatcase.mypackage.
Но чаще всего такого рода длинные надписи мы видим в соцсетях — #этожеобычнаяпрактикадлятегов 🙂
Как выбрать нотацию
Лучшей нотации на все случаи жизни не существует. Для разных языков программирования есть разные соглашения о наименованиях — это свод правил с рекомендациями, какие имена стоит выбирать для разных элементов программы (переменных, классов, методов и тому подобного). Например, здесь такого рода соглашения для Python, а здесь — для Java.
Обычно разработчики придерживаются этих общепринятых рекомендаций, но никто не запрещает IT-компаниям устанавливать свои правила, если они не противоречат синтаксису языка. В таком случае лучше соблюдать местные соглашения — если, конечно, вы хотите задержаться в этой компании 🙂
Мы на наших курсах не своевольничаем — учим называть переменные по всем канонам языка: будь то Java, C#, популярный сейчас R или другие из нашего каталога курсов. Бонусом к правилам наименования — навыки программирования на выбранном языке, а потом и помощь в трудоустройстве.
Camel, Pascal, Snake Case и другие стили написания
Jul 25, 2020 · 4 min read
Разбираемся в зоопарке стилей написания составных слов в JS — зачем столько и для чего они нужны.
Заставьте 10 человек нарисовать одну и ту же картинку и вы получите д е сять совершенно разных изображений — и чем сложнее исходник, тем больше будет отличий между репликами. То же самое справедливо и для кода. Там, где заканчиваются строгие правила языка и начинается творчество разработчика, код становится похож на рукописный текст — он имеет свой стиль, структуру, почерк. У кого-то почерк четкий и понятный, а у кого-то сложно даже просто разобрать написанное. Чтобы один разработчик понял другого, существует масса гласных и негласных правил. Этой же цели служат и стили написания.
Функция у стилей написания всего одна — уложить в одну неделимую строку сложное, составленное из нескольких слов, название переменной, метода, свойства и тому подобное. Потому что в JavaScript, как и во многих других языках программирования, нельзя просто взять и написать:
Пробел является зарезервированным символом, поэтому парсер языка будет воспринимать user, login и count как отдельные сущности, в результате чего вы получите SyntaxError.
Но чем заменить пробел, чтобы код стал рабочим, а человеку, читающему потом ваш код, не захотелось рыдать? Разберем несколько популярных решений, а главное — увидим, что их выбор иногда не просто дело вкуса: зачастую применяются сразу несколько стилей, но каждый из них нужен в определенном месте.
Camel case (camelCase)
«Верблюжий регистр » — по аналогии с горбатым красавцем каждое следующее слово в цепочке начинается с заглавной буквы.
Этот стиль, пожалуй, можно назвать самым популярным в JS. Он подходит для именования переменных и методов. Его можно назвать наиболее консистентным, так как он используется и для именования стандартных методов — setTimeout, toValue, toLocaleDateString.
Pascal case (PascalCase)
Очень схож с camelCase, но первое слово в строке так же пишется с заглавной буквы. Настолько схож, что часто его относят к разновидности camelCase — якобы есть традиционный camelCase как lowerCamelCase и его частный случай PascalCase как UpperCamelCase. По крайней мере, в этом нас убеждает русскоязычная википедия. Но если перейти на англоязычную версию и покопаться в источниках, то можно найти небольшую заметку 2004 года в блоге Microsoft от Брэда Абрамса — “History around Pascal Casing and Camel Casing”, в которой говорится что термин PascalCase абсолютно логично проистекает из языка Pascal, стандартные методы которого именуются с заглавной буквы ( Abs, Random, Round). В JS PascalCase используется для именования типов и классов:
Опять же, такой стиль применяется и в именовании стандартных классов JavaScript — RegExp, ResizeObserver.
Snake case (snake_case)
«Змеиный регистр » — заменяет пробелы на символ подчеркивания. В JS он отлично подходит для именования полей в базах данных, или для именования статичных данных, хранящихся в JSON.
Во-первых, по сравнению с camelCase и PascalCase глаз быстрее “парсит” такую строку. Представьте себе json-словарь, к примеру, c перечнем цветов в стиле PascalCase:
Сложно прочитать, правда? А если таких строк сотня?
А теперь тот же словарь в стиле snake_case:
На мой взгляд, в большом массиве однотипных строк snake_case выглядит однозначно читабельнее.
Во-вторых, в этом случае snake_case позволяет сразу отличить данные, которые нельзя мутировать (перезаписывать).
В-третьих, в отличии от kebab-case, который мы рассмотрим ниже, snake_case всё также дружит с парсером языка и вы можете легко использовать его:
Screaming snake case (SCREAMING_SNAKE_CASE)
Его ещё иногда называют UPPER_CASE_SNAKE_CASE. Этот стиль стоит особняком. Думаю, все согласятся, что писать таким образом весь код категорически не рекомендуется. Он используется только для акцентирования внимания. До появления в JS настоящих констант, он был особенно актуален для их именования. Таким образом можно было выделить переменную, которая ни в коем случае не должна быть изменена. Теперь же достаточно объявить её с помощью const и в случае попытки перезаписать её вы получите TypeError. Но такой стиль именования по-прежнему используют для лучшей читабельности кода:
Kebab case (kebab-case)
Его также называют spear-case, и он является стандартом в Lisp. Он может с легкостью использоваться в языках, которые не требуют пробелов между операторами и выражениями. Но, к сожалению, JS к таковым не относится. К примеру, чтобы обратиться к свойству объекта с подобным ключом, придется обернуть его в кавычки:
Но почему тогда мы всё равно встречаем его в JS?
Их всех перечисленных стилей kebab-case является наиболее читабельным для обычного человека, не разработчика. Поэтому он используется там, где его может увидеть пользователь. Например, в URL-адресах (www.blog.com/cool-article-1) или в названиях скачиваемых файлов (cool-article-1.pdf).
Нельзя назвать какой-либо из стилей предпочтительным — каждый уместен при правильном использовании. Как правило, на проекте используется несколько стилей для разных мест и это только повышает читабельность кода. Одно из качеств хорошего разработчика — это умение легко переходить с одного стиля на другой и подстраиваться под то, что используется в конкретном проекте. Если вы повсеместно использовали camelCase, а в новой команде от вас просят snake_case, то для вас не должно составить труда писать именно так.
Удачи вам в разработке и спасибо за внимание!
P. S. Все мы люди 🙂 А значит, нам свойственно ошибаться.
Увидели опечатку или ошибку — выделите текст, кликните в всплывающем меню иконку сообщения с замочком и напишите о ней.
Верблюжья нотация или нижние подчёркивания: научный подход
Авторизуйтесь
Верблюжья нотация или нижние подчёркивания: научный подход
Если по странному стечению обстоятельств вы программист, который не беспокоится, использовать ли верблюжий регистр или нижние подчёркивания для обозначения переменных, то пришло время определиться. Постарайтесь выбрать независимо от соглашений по оформлению кода, привычки или типа идентификатора. Если вы пишите на Lisp и любите тире, просто проголосуйте за вариант, который вам больше понравился.
Проголосовали? Отлично! Теперь моя очередь провести некоторую работу и попытаться дать вам полу-научное обоснование того, какой стиль форматирования лучше всего подходит для программирования.
Честно говоря, такой код проще читать.
Я бы не написал этот пост, если бы не прочитал статью Коена «Tao of Coding». Как мой бывший коллега, он переманил меня на сторону нижнего подчёркивания. Толчком к финальному решению послужил ответ в одном из споров по поводу соглашений об именовании. Он дан в цитате слева. Так что же, это просто мнение или действительно факт?
Это вдохновило меня обратиться к научным источникам. Ведь должны были проводить какие-то исследования в этой области? И кое-что я действительно нашёл, но, как оказалось, не очень много. Для начала, на случай если вы ранее не участвовали в дискуссиях на эту тему, представлю существующие мнения и их опровержения. Если же вам нужны факты, то можете сразу переходить в третий раунд.
Раунд 1: Мнения
За нижние подчёркивания:
Спасибо тебе, Йосси Крейнин, за 2 последних пункта, обсуждённых в IHateCamelCase.
За верблюжий регистр
Раунд 2: Опровержения
Против нижнего подчёркивания
Против верблюжьего регистра
Раунд 3: Факты
При чтении краткого изложения исследовательской статьи возникает ощущение, что наука на стороне верблюжьей нотации.
Результаты показывают, что использование верблюжьей нотации позволяет всем, независимо от подготовки, точно распознавать идентификаторы, а те, кто привык читать в верблюжьем регистре способны распознавать идентификаторы в этом стиле быстрее, чем те, которые написаны с подчёркиваниями.
Существующие исследования
Исследования естественных языков в психологии показывают, что замена пробелов на другие символы или цифры негативно влияет на чтение. Однако затемнённые квадратики (похожи на подчёркивания) не оказывают существенного влияния на скорость чтения или точность распознавания отдельных слов. Удаление же всех пробелов замедляет чтение приблизительно на 10-20%.
Подготовка эксперимента
Эмпирическое исследование 135 программистов и не-программистов. Испытуемым нужно было корректно определить соответствующую фразу (не более трёх слов) из четырёх схожих вариантов. Измерялись следующие показатели:
Результаты
Заключение
Взглянув на все результаты вместе, становится очевидно, что верблюжья нотация обеспечивает выигрыш как по скорости, так и по точности, при условии, что испытуемый уже привык применять этот стиль. Причём предварительная подготовка необходима только для скорости распознавания.
Обсуждение
Лично я считаю вывод ошибочным по нескольким причинам.
Обсуждая возможные угрозы для точности, они упоминают следующее: «В сущности, весь тренинг проходил с верблюжьим регистром, было бы интересно изучить людей, натренированных использовать нижние подчёркивания.» С учётом этого результаты (4) и (5) выглядят необъективными. Разве не очевидно, что люди, привыкшие к верблюжьей нотации, будут хорошо в ней ориентироваться? И это точно имеет негативное влияние на «скорость поиска» в случае подчёркиваний.
Таким образом, остаётся только низкая скорость чтения в верблюжьем регистре (2). В среднем, чтение идентификатора в верблюжьем регистре занимает на 13,5% больше времени, чем с нижними подчёркиваниями. Умножьте это на весь объём кода, и вы узнаете моё мнение в войне между верблюжьей нотацией и подчёркиваниями!
Итак, каково ваше мнение сейчас? Снова постарайтесь выбрать независимо от соглашений, привычек или типа идентификатора.
Обновление Я обсудил очередное исследование в новом посте. Они воспроизвели исследование, и по их измерениям чтение идентификаторов в верблюжьей нотации занимает на 20% больше времени, и вдобавок, используя систему слежения за глазами, они выяснили, что идентификаторы в верблюжьем регистре требуют в среднем больше времени для фиксации глаз.