Комментарии 44
А самый крутой гайд, имхо, в Python. Он там в официальной документации (перевод).
Можно сделать свой профиль, и использовать его для разработки, а для загрузки в git использовать code style, принятый в организации/на проекте.
Или, если не нужно использовать форматирование на отдельных участках согласно общему профилю — см. здесь.
Можно подключить правила к IDE или запускать линтер локально или автоматически при деплое.
Почти со всеми приведенными примерами согласен. Ещё для большей наглядности стараюсь сложные условия разбивать на ряд простых. Тогда за счёт имени константы ещё и самодокументирование идёт. В одном же условии как ни форматируй — каша.
const tresholdOverflow = value >= someThreshold
const properType = type === someType1 || type === someType2
if (tresholdOverflow && properType ) {
do something
}
Ещё, чтобы не напороться на ошибки с приоритетами и просто для наглядности, условия в тернарных операторах помещаю в скобки:
return (a < b) ? a : b
ну и, кстати, в return ничего не вычисляю — отлаживать потом неудобно. Создаю переменную result и её возвращаю.
Некоторые кодстайлы запрещают такие почти не используемые переменные
If/else выглядит несимметрично и объяснения этому не вижу. Вообще ожидал подробного объяснения по каждому пункту
Если полей в объекте немого и строка не превышает нужную ширину, то отделяйте поля пробелом.
а потом надо добавить еще полей и коммит расстягивается до бескононечности. По похожей причине рекомендуется в if всегда ставить фигурные скобки даже если всего одна строчка после него
Длина строки не должна превышать ширину туннеля прямого взгляда.
А «ширина туннеля прямого взгляда» — это сколько?
Лично я ожидал чуть больше, чем просто описание своего любимого кодстайла.
Например, почему два пробела лучше четырех с точки зрения формирования тех же связей?
Опять же, если уж говорить о компактности и экономии места, то при импорте пробелы внутри объекта излишни, разве не так?
PS Кстати, нежно люблю табы в качестве отступов, потому что их как раз можно настроить на любую ширину каждому человеку в его любимом редакторе. Жаль, что все кодстайлы предписывают пробелы.
Сам всегда и пользовался два пробела. Но раньше все использовали четыре равные табу. Недавно понял что два пробела это от нашего кода с большой вложенностью. Так что хорошо ли это уже сомневаюсь.
Если говорить о практическом применении, всегда лучше взять готовый популярный и просто его придерживаться. Какой именно значения не имеет. Обычно все вменяемые.
Невменяемые получаются когда при старте проекта начинают создавать стайл с нуля, потом оказывается то это неудобно и то нехорошо.
Из явных просчетов которые встречались отсутствие запятых после последнего свойства объекта, выравнивание значений свойсв отступами, наличие противоречивых правил.
Думаю, рекомендовал бы юниорам тоже практиковаться без IDE с форматтерами и подсказками — это также заставляет думать о грамотной организации кода по файлам, сокращении схем нормализации и минимальном пути по пробросу данных (в те времена мне встречалось много кода на php, где приходилось открывать более 10 файлов, чтобы понять, что именно передано в функцию). Сейчас с господством IDE это снова почти становится проблемой, так как при наличии интеллектуальных подсказок можно фактически не уделять времени грамотному проектированию. Но не нужно.
Кстати, музыкант, и играю гаммы — это действительно полезно)
Речь не о "многих программистах". Речь об унификации стиля в команде из 10+ программистов. И не важно, синьор ты или мимо проходил.
Если получится добиться нормальной работы обеих в связки. У нас вот на фронте prettier отключили, потому что конфликтовал по правилам с eslint c typescript плагином.
Так-то естественно, что если два разных инструмента будут форсить в одних и тех же строчках разные правила — это ничего хорошего не даст.
1) Берем вменяемые общие правила. Они совсем не обязаны быть идеальными, просто плюс-минус приемлемыми. Про prettier уже сказали.
2) Вешаем применение этих правил на коммит-хуки.
3) ?????
4) Те, кого не устраивают эти правила — вольны в своих IDE цеплять другие правила и форматировать код (на время редактирования) так, как им удобно. В VCS всё равно будет попадать единое форматирование. Короче, PROFIT.
let value
if (condition) {
value = ...your_code...
} else {
value = ...your_code...
}
return value
Новый взгляд на code style