Русский

Текст и повседневные инструменты · Текстовый инструментарий

CamelCase, Snake_case, kebab-case и PascalCase: где используется каждый

· Фон

преобразование регистра идентификаторы рабочий процесс разработчика

Один идентификатор профиля, написанный в стиле Camel, Pascal, Snake и Kebab.
Оригинальная векторная иллюстрация ToolAcre

Обзор соглашений об именах — откуда они взялись, какие языки и экосистемы чего ожидают, и почему имена файлов, URL-адреса, столбцы базы данных и ключи JSON тянутся в разном направлении.

Пять имен для одного — userProfileId, user_profile_id, user-profile-id, UserProfileId и USER_PROFILE_ID.

Фраза «идентификатор профиля пользователя» может стать `userProfileId`, `UserProfileId`, `user_profile_id` или `user-profile-id` без изменения ее слов. Видимая разница заключается в том, где появляются границы и начинается ли первое слово с заглавной буквы. ToolAcre генерирует эти четыре формы непосредственно из одних и тех же входных данных, что упрощает сравнение их структурных различий.

`USER_PROFILE_ID` в верхнем регистре — еще одно полезное соглашение проекта, но оно не является отдельной комбинированной опцией в исходном коде преобразователя регистра. Инструментарий независимо предоставляет преобразования регистра змеи и верхнего регистра. Если в базе кода используются константы в верхнем регистре, преобразуйте их в змеиный регистр, а затем в верхний регистр, вместо того, чтобы утверждать, что меню регистра выполняет оба шага одновременно.

Четыре преобразования, продемонстрированные с помощью Text Toolkit, а также форма константы в верхнем регистре, собранная отдельно.

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

Многие команды присваивают этим двум формам разные имена, но репозиторий не устанавливает универсального языкового правила или истории этого разделения. Считайте локальное руководство по стилю, линтер, фреймворк API или близлежащий код авторитетным источником. Конвертер меняет форму написания; он не определяет, представляет ли имя класс, функцию, переменную или компонент.

CamelCase и PascalCase отличаются первой буквой; их языковая история находится за пределами хранилища

`snake_case` понижает значение каждого обнаруженного слова и объединяет результаты подчеркиванием. Для `User Profile ID` ToolAcre возвращает `user_profile_id`. Разделители остаются видимыми, что может помочь, когда имена проходят через системы, которые не сохраняют надежно заглавные буквы, но эта практическая польза не является доказательством того, что каждая база данных, язык или служба ожидают подчеркивания.

Используйте соглашение, уже определенное в пункте назначения. Служба Python может иметь одну политику, схему SQL — другую, а сериализованную полезную нагрузку — третью. ToolAcre не может проверять эти контракты. Его надежное обещание уже: `toSnakeCase` обнаруживает слова, записывает каждое из них в нижний регистр и вставляет `_` между ними, не решая, разрешает ли место назначения такой результат или предпочитает его.

Вывод Snake_case поддерживается напрямую; экосистема и SQL ожидания зависят от каждого проекта

`kebab-case` использует те же слова в нижнем регистре, но объединяет их дефисами, образуя `user-profile-id`. Эта форма визуально понятна в тех местах, где дефис принимается в качестве данных, например, в настроенном сегменте маршрута или в имени файла, определенном проектом. Это не идентификатор JavaScript, поскольку анализатор может читать дефис как оператор, а не как часть одного имени.

В схеме перечислены классы CSS, атрибуты HTML, флаги командной строки и фрагменты URL, однако текстовая библиотека не определяет правила этих потребителей. Перед преобразованием подтвердите целевой синтаксис. ToolAcre также имеет отдельную функцию `slugify` со складкой акцентов, выбором разделителя, обрезкой и дополнительной обработкой длины, поэтому обычное преобразование кебаба не следует представлять как полную проверку URL-slug.

вывод kebab-case поддерживается напрямую; допустимое использование зависит от окружающего синтаксиса

Границы — это то место, где соглашения об именах становятся функциональными, а не косметическими. Объект браузера может использовать одно написание, тогда как полезные данные API или столбец базы данных используют другое. Сделайте это сопоставление явным для одного адаптера, а не разбрасывайте преобразования по представлениям, запросам и бизнес-логике. Предсказуемый край обеспечивает согласованность каждой внутренней модели и облегчает обнаружение несоответствий.

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

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

Рассмотрим небольшое приложение с фразой `user profile ID`. ToolAcre создает `userProfileId` для случая верблюда, `UserProfileId` для случая Pascal, `user_profile_id` для случая змеи и `user-profile-id` для случая кебаба. Каждый выход содержит одни и те же три обнаруженных слова, а заглавные буквы и вставленный разделитель кодируют выбранную форму.

Практический проект может сохранить `userProfileId` в объекте JavaScript, явно сопоставить его с `user_profile_id` на границе постоянства и зарезервировать `user-profile-id` для местоположения, грамматика которого допускает дефисы. Точный выбор принадлежит этому проекту. Важная часть — документировать каждую границу и тестировать отображение, а не постоянно гадать по внешнему виду.

Чего это не касается — венгерская нотация и споры об аббревиатурах внутри идентификаторов.

Это сравнение не определяет написание сокращений. Реализация преобразует обнаруженные слова в строчные буквы перед их перестроением, поэтому входные данные, содержащие `HTTP`, могут отображаться как `Http` внутри Pascal или вывода Camel. Независимо от того, предпочитает ли команда `Http`, `HTTP`, `Id` или `ID`, политика именования требует явного исключения вне этих общих преобразований.

Он также не охватывает историю обозначений, языковые стандарты или все допустимые грамматики идентификаторов. Для этих утверждений требуются источники, помимо файлов инструментов, использованных в этой статье. ToolAcre демонстрирует детерминированные преобразования текста и документирует одно ключевое ограничение: составное слово, написанное без какой-либо обнаруживаемой границы, не всегда может быть разделено на слова, которые задумал человек.

Политика сокращений и история обозначений не входят в число доказательств конвертера.

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

Если граница требует другой формы, вставьте идентификатор в преобразователь регистров Text Toolkit и проверьте четыре выходных значения, прежде чем применять один. Операция выполняется в браузере, и в манифесте указано, что текст не отправляется на сервер и не сохраняется автоматически. Используйте результат в качестве продуманного сопоставления, а затем позвольте тестам проекта и проверкам локального стиля подтвердить окончательный выбор.