Лингвистика программирования — нейминг
Программирование — это лингвистика. Красота кода — лингвистическая, не математическая. Правильный нейминг + структура помогают и команде, и AI.
Суть
автор и Безуглый считают программирование во многом лингвистикой. Это меняет фокус: красота кода = выразительность языка, а не лаконичность математики. Хороший нейминг — между крайностями математиков (a+b) и филологов (numberOfIdentifierOfClient).
Программирование как язык
- Синтаксические конструкции
- Семантика — что значит каждое слово
- Идиомы — как «принято говорить»
- Стилистика — короткие и длинные имена
- Прагматика — для кого пишешь
Пропорции
- Функция — не слишком большая, не слишком маленькая
- Модуль — оптимальный размер для понимания
- Рядок — не длинный однострочник на 200 символов
- Файл — управляемое количество строк
- Имя — между лаконичностью и полнотой
Имена переменных
Слишком короткие (математики)
a,b,c,x,yn,mдля размеровi,jдля индексов- Хорошо для математических формул
- Плохо для бизнес-логики
Слишком длинные (филологи)
numberOfIdentifierOfClienttheCurrentValueThatIsBeingProcesseddefaultConfigurationForApplicationStartup- Хорошо для документации
- Плохо для чтения кода
Хорошие имена
- Отражают суть, не детали реализации
- Глаголы для функций (
fetchUser,validate) - Существительные для переменных (
user,config) - Прилагательные для свойств (
isValid,hasPermission) - Контекст из модуля и класса
Правила нейминга
- Глагол + существительное для функций
- Множественное число для массивов:
users, неuserList - boolean с is/has/can:
isAuthenticated,hasAccess - Без сокращений:
cust→customer - Без венгерской нотации:
strName→name - CamelCase для функций/переменных, PascalCase для классов/типов
Чек-листы микроархитектуры
- Имена — есть/осмысленны/единообразны
- Связывание — модули знают друг о друге минимум
- Декомпозиция — функции делают одну вещь
- Разделение — данные отделены от поведения (или нет)
- Объединение — общая логика вынесена
Связь с AI
- Правильный нейминг = правильная генерация
- AI парсит лингвистические модели
- По хорошему имени переменной генерирует логичное продолжение
- По плохому имени — путаница, нарушение интента
- Tab-комплит работает в разы лучше с осмысленным контекстом
Стиль Java vs стиль JS
- Java — мысли о качестве и maintainability, но в 10 раз больше кода
- JS — короче, но требует больше дисциплины
- В JS легко скатиться в
a+bили в анонимные функции везде - Принцип «короткой функции» работает в обеих
- Стиль Angular — это Java-культура
Антипаттерны нейминга
data,info,temp,result— нулевая информативностьprocess,handle,manage— слишком общоmyFunction,myVar— артефакты туториалов- Транслит:
polzovatel,nazvanie— для внутренней команды плохо - Hungarian notation в JS
Принципы коротких функций
- 5-15 строк — идеал
- Один уровень абстракции на функцию
- Имя описывает, что делает
- Возвращает один тип значения
- Не более 3 аргументов
🎓 Источники
- 🎓 [🎙️ Найм зламаний] + Безуглый · 2025-01-16 · YouTube
- Тезисы: программирование — лингвистика; пропорции функция/модуль/строка; нейминг между математиками и филологами; чек-листы микроархитектуры; правильный нейминг помогает AI
- 🎓 [🎈 Программирование — это удовольствие] · 2025-12-02 · YouTube
- Тезисы: программирование = лингвистика; культура мышления через язык
- 🎓 [🧑🎓 Как научить программиста включать мозг] + Брагилевский · 2025-11-27 · YouTube
- Тезисы: программирование как язык; Хомский, Витгенштейн