Наверное, каждый из вас слышал о SOLID, KISS, DRY, DI, HWDP и других популярных наборах хороших практик программирования.
Но позволю себе предположить, что никто не знает принципов CHAD, касающихся хороших практик работы с системами контроля версий и рецензирования кода.
Ну что же, приступим!
C – Clear History
История должна быть чистой, как твоя комната после прочтения книги Джордана Питерсона (с). Ну или как хорошая водка! Каждый коммит должен иметь смысл, никаких "quick fix" или "small refactoring". И никаких говнобранчей пятилетней давности в репо.
H - Hermetic PR
Каждый создаваемый пулл-реквест должен содержать в себе конкретное изменение функциональности или обособленную часть крупных изменений. А если, по каким-то причинам, это невозможно, то хотя бы включи голову и придумай нормальный заголовок вместо "Add new table + add migration + add some test + fix some issues + use new table in code".
A - Alternative Review
Сделать ревью кода не означает проверить, что тесты светятся зелёным, и запустить код локально и подтвердить "У меня работает". Недостаточно даже пробежаться по списку - SOLID, KISS, MPK, MPO, PDK. Подумай - нельзя ли реализовать фичу лучше, чем автор пулл-реквеста. Если возможно - предложи реализацию автору, обсудите вместе возможные решения.
D - Detailed Comment
Уточнённый принцип C. Пиши нормальные описания коммитов (commit-messages). Знаю, что ты пошёл в программисты, потому что ненавидел писать сочинения в школе, но раз уж зарабатываешь 100500к/наносек и умеешь печатать разные смешные символы на клавиатуре, то было бы неплохо уметь описать словами то, что понаписывал в коде. А не всякую хрень, в стиле "use new method", "fix bug", "modify interface" и т.д.
Комментарии (7)
UMenyaNeudobnieVoprosiki
14.12.2022 14:52+2.git/hooks/commit-msg
message="$(sed -n 1p "$1" | sed -E 's/^[[:space:]]+//;s/[[:space:]]+$//')" # prevent non informative commit descriptions (too short) if (( $(echo "$message" | wc -m) < 7 )) ; then echo Commit title too short. Please describe properly! >&2 exit 1 fi shopt -s nocasematch # prevent non informative commit descriptions (has no sense) for x in \ "Bug fix" \ "Bug fixes" \ "Bug fixing" \ "bugfixing" \ "bugs" \ "Bugs fix" \ "Code fix" \ "Comment" \ "Commit" \ "Customer support" \ "Dirty hotfix" \ "Fix" \ "Fixes" \ "Fixing" \ "hf" \ "Hot fix" \ "hot fixes" \ "hotfix" \ "Merge" \ "sf" \ "Small changes" \ "Small fix" \ "[fixes]" \ "[fix]" \ "[merge]"; do if [[ $x = "$message" ]]; then echo Commit title non informative. Please describe properly! >&2 exit 1 fi done
и в pre-commit можно ещё бить по рукам за коммит в мастер или именование ветки не надлежащим образом
MentalBlood
14.12.2022 15:29+2Знаю, что ты пошёл в программисты, потому что ненавидел писать сочинения в школе
Ерунда какая-то, и там и там язык же, и там и там надо писать чтобы легко читалось, даже если описываешь сложные вещи. И там и там надо перекладывать мысли в текст
P.S. Просто я программист несмотря на то что любил писать сочинения в школе (и отлично получалось)
BASic_37
Вы сами переходили по своей ссылке HWDP??? Вы ничего не перепутали?
tommyangelo27 Автор
Если что, данная статья — перевод, и аббревиатура — ирония от автора оригинальной статьи ;-)
BASic_37
Теперь понятно, только вряд ли будет понятна здесь (для не поляков). Есть предложение пометить это как-то, типа "(местный польский юмор)".
tommyangelo27 Автор
Возможно, ACAB был бы более понятен для русскоязычного читателя (всяко понятнее чем ауешные аналоги, вроде СЛОН или ЛОРД), но я позволю себе оставить как есть.
В оригинале ссылки нет вообще, предполагается, что читатель и так в курсе, что означает HWDP. Мне кажется, что русскоязычная Википедия неплохо вводит в контекст в данном случае.