metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-09-25 12:17 pm

О TDD, ретроградстве и варении в собственном соку

По мотивам предыдущего поста про taucraft: решарпер там или не решарпер, но Test-Driven-Development штука (вроде бы) объективно полезная.

При этом я почти уверен, что я TDD не использую, т.к. уже 15 лет занимаюсь всякой хренью в экстренном темпе, тесты у меня все заключаются в "проверить 10 раз чтобы миграция 30 Гб БД прошла успешно" и "отчетность видна от имени пользователя, который ей будет пользоваться".

Правильность же реализации/рефакторинга/замены всего с нуля проверяется за счет двойной записи бухгалтерии, наличия нескольких путей расчета одной и той же цифры и статических гарантий (т.е., например, я никогда не стану делать отчет отдельными запросами по списку аналитических кодов, если его можно сделать одним select/group by, при этом в него нужная аналитика попадет гарантированно). Плюс функциональщина, статические типы, кодогенерация - ну невозможно ошибится в коде, если у тебя источник информации для кода всегда один. А ошибки вида "не так спроектировали" - тестами не лечатся.

Еще я не использую разного рода современные инструменты, версии студии меняю через 2-3 года после их выхода, склонен использовать самодельные компоненты вместо готовых и вообще страдаю ретроградством.

Проблема в том, что у меня совершенно нет критериев оценки, где я прав и пропускаю ненужные buzz-words мимо ушей, а где не прав, и упускаю полезные инструменты. Потому что на всех работах инструменты/платформы/методики работы выбираю я и обсудить этот выбор на адекватном уровне не с кем.
Раньше хотя бы был вменяемый критерий "успеем проект сдать вовремя или не сделаем вообще", а сейчас и он смысл потерял - это вообще перестало зависеть от используемых технологий, а стало зависеть от наличия бабла у клиентов и правильной организации труда.

Т.е. та же проблема, что в любых НИИГиТ - сидит 50летний мега-гуру, всю жизнь варившийся в собственном соку, который уже не в состоянии различить, где бессмысленная гонка за новизной или просто неподходящая технология, а где реально нужно отрывать жопу от стула и менять себе мозг.

[identity profile] guamoka.livejournal.com 2012-09-26 07:48 am (UTC)(link)
Знаете ребе, у меня из головы всё не выходит случай, когда мне спустили достаточно такое ёмкое задание, я его наклепал, обернул этими самыми тестами, а потом мне заявили, "ой, а мы нафиг перепутали все таблицы, надо было взять совсем другие и сделать всё совсем по-другому". Т.е., фактически оказалось, что можно было результат двухдневной работы и сотни строк разношерстного кода взять и спустить в унитаз. Я и раньше-то понимал вторичность всей этой лабуды с тестами, что ничего ими не исправишь, если не под фонарем искать, но этот случай меня окончательно как-то добил.

[identity profile] metaclass.livejournal.com 2012-09-26 09:32 am (UTC)(link)
Это совсем уже предельный случай. Обычно тесты чуть-чуть полезны, если код не совсем тривиальный и будет использоваться и дорабатываться.

И да, у меня рефакторинг часто сводится к "выкинуть все и сделать правильно", т.к. починка существующего кода - это как кровати в борделе переставлять.

[identity profile] guamoka.livejournal.com 2012-09-26 09:44 am (UTC)(link)
Увы, отнюдь, это не запредельный случай в оффшорном говнокодинге. Примерно так всё и происходит. И речь там шла не о починке кода, а люди тупо перепутали таблицы. Как-почему-зачем- это уже (не совсем) другая история:-)

[identity profile] kong-en-ge.livejournal.com 2012-09-27 03:00 pm (UTC)(link)
> т.к. починка существующего кода - это как кровати в борделе переставлять
так это, вы кровать не переставляйте, а почините!