2020-01-24
Q&A Споры о вкусах
Привет. Интересная дискуссия с коллегами: спорим о лучших практиках юнит-тестирования.
В пространстве витает противоречивая точка зрения: некоторые коллеги считают, что в тестах не надо давать имена "магическим числам" в тестах, т.к. некоторым неудобно читать пулл-реквесты, потому что можно забыть, какое же значение лежит в константе.
Другая точка зрения заключается в лучших практиках кода, которые говорят, что константы и прочие "магические числа" всегда нужно именовать.
Казалось бы, первая точка зрения апеллирует к удобству чтения... но причина... неудобно читать пулл-реквесты?! Трудно подняться на пару строчек выше и посмотреть значение константы? На первый взгляд вроде нормальная аргументация, про удобочитаемость, а потом посмотришь с другой стороны, выглядит диковато и немного по-детски. Собственно, мое удивление здесь этой самой аргументации. Казалось бы, "матерый" программист еще и не то прочитает... А вы что думаете? Как вы делаете в своих тестах? Как вам вообще ситуация? Интересно послушать мнения.
Типичный пример спора ради спора, в котором некоторые участники не хотят слушать оппонентов.
Аргументы типа "удобно-неудобно", "красиво-некрасиво" это очень хорошие аргументы. Ведь с ними невозможно спорить. Если мне удобно читать зелёные буквы на оранжевом фоне, то кто меня переспорит, правда?
Интересной эту дискуссию я бы тоже не назвал.
Если мы говорим об "удобстве", то выбрали то, что "удобнее" большинству (если не можете и до этого договориться, то пусть тимлид решит, ну или я могу за вас решить, если уж совсем никак), а остальные привыкнут через неделю. Если через месяц мнение большинства изменилось (оказалось, что у вас продакшн из-за этого падает, или тимлид облысел), то проголосовали ещё раз и закрыли этот вопрос.
В общем, разговор ваш так же важен, как и расстановка фигурных скобочек, табы-пробелы, но чуть менее важен, чем ответственное решение о том, класть ли тесты в папочку /tests или /src :)
Скорее всего, у вас есть более важные проблемы, за решение которых вам платят.