Kebab-case лучший
Мой выбор — kebab-case! Заметка для тех, кто много работает в терминале.
В терминале неудобно работать с именами файлов, содержащие пробел. Например, команда
head 005 kebab case.tex
применяется не к одному файлу, а к трём: 005
, kebab
и case.tex
.
Дело в том, что пробел используется командной оболочкой как разделитель аргументов.
Из-за этого пробелы в именах файлов приходится экранировать или заключать в кавычки.
Чтобы не возиться с кавычками и экранированием, я встречал три соглашения для имён файлов: snake_case, kebab-case и PascalCase. Вот они, слева направо.
Pascal | Snake | Kebab |
---|---|---|
005KebabCase.pdf | 005_kebab_case.pdf | 005-kebab-case.pdf |
IvanovCVMLEngineer.pdf | ivanov_cv_ml_engineer.pdf | ivanov-cv-ml-engineer.pdf |
ОтпускШаблон.docx | отпуск_шаблон.docx | отпуск-шаблон.docx |
UnitsInLastPlace.md | units_in_last_place.md | units-in-last-place.md |
Конечно, при выборе соглашения стоит прежде всего придерживаться традиции проекта, учитывать технические ограничения и стандарты платформы. Но если выбор можно сделать в пользу kebab-case, я его предпочту остальным. И вот почему.
Почему не PascalCase?
PascalCase вовсе НеИмитируетПробелы, и европейский глаз к такому не подготовлен. Кроме того, у чисел нет строчной и заглавной форм, в отличие от букв. В целом, парсинг имён файлов усложняется, а ещё и Shift зажимать.
Почему не snake_case?
Snake_case имитирует пробелы, но в стандартных моноширинных шрифтах нижнее подчёркивание обычно смотрится крупно. Судите сами.

Snake и kebab case в разных шрифтах.
На мой взгляд, только у Roboto Mono удачная читаемость в случае snake_case. И я думаю вот почему. Во времена пишущих машинок нижнее подчёркивание использовалось для выделения текста или для мест под пропуски в бланках. С такими задачами символ подчёркивания должен был быть чуть шире большинства символов и ниже базовой линии. Ну а современные шрифты чтут эту традицию. Разумно?
Почему kebab-case?
А вот у kebab-case нет упомянутых недостатков. Его единственный недостаток состоит в ограничениях или неудобствах при программировании, особенно, при импорте исходного файла. Минус/дефис используется как оператор вычитания и, в лучшем случае, синтаксис языка позволяет как-то его экранировать.
Недостатки других соглашений для меня существенней, поэтому kebab-case лучший.