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 лучший.