CHAD Principles

Наверное, каждый из вас слышал о 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" и т.д.

@tommyangelo27
14.12.2022 16:22 UTC
Первоисточник

Комментарии

@BASic_37
14.12.2022 11:50 UTC
0

Вы сами переходили по своей ссылке HWDP??? Вы ничего не перепутали?

@tommyangelo27
14.12.2022 11:53 UTC
0
Если что, данная статья — перевод, и аббревиатура — ирония от автора оригинальной статьи ;-)
14.12.2022 12:02 UTC
0

Теперь понятно, только вряд ли будет понятна здесь (для не поляков). Есть предложение пометить это как-то, типа "(местный польский юмор)".

14.12.2022 12:16 UTC
0
Возможно, ACAB был бы более понятен для русскоязычного читателя (всяко понятнее чем ауешные аналоги, вроде СЛОН или ЛОРД), но я позволю себе оставить как есть.
В оригинале ссылки нет вообще, предполагается, что читатель и так в курсе, что означает HWDP. Мне кажется, что русскоязычная Википедия неплохо вводит в контекст в данном случае.
@UMenyaNeudobnieVoprosiki
14.12.2022 11:52 UTC
+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 можно ещё бить по рукам за коммит в мастер или именование ветки не надлежащим образом

@
14.12.2022 17:52 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
@MentalBlood
14.12.2022 12:29 UTC
+2
Знаю, что ты пошёл в программисты, потому что ненавидел писать сочинения в школе

Ерунда какая-то, и там и там язык же, и там и там надо писать чтобы легко читалось, даже если описываешь сложные вещи. И там и там надо перекладывать мысли в текст


P.S. Просто я программист несмотря на то что любил писать сочинения в школе (и отлично получалось)