История изменений
Исправление Iron_Bug, (текущая версия) :
да я не усложняю. жизнь и без того сложная штука. наоборот, надо облегчать жизнь себе и другим, и аккуратно писать код.
в последнее время пришлось перелопачивать много чужого кода, доставшегося в сопровождение и доработку. в целом, неплохой код, чисто написанный, хотя и обросший костылями, потому что не было чёткого ТЗ и код развивался и дорабатывался спонтанно, под внезапно возникающие новые требования, без заранее продуманной стратегии. и там были скрытые тараканы, которые вылезли на нагрузочных тестах. мелкие утечки в сетевом анализаторе, при довольно редких условиях, в отдельных пакетах. до сих пор нет уверенности, что выловила их все. а если бы сразу писали тесты и проверяли все ветки, не было бы таких проблем с сопровождением. я, конечно, всё равно всё зачищу и разобью код на модули, которые можно будет тестировать независимо. но этот рефакторинг и ловля чужих багов отнимают время. а можно было бы потратить его на что-то полезное. поэтому я двумя руками за тестирование. в виде юнит-тестов, где можно, и со стресс-тестированием на настоящем железе.
и никакой компилятор такие ошибки выявить не в силах. и даже валграйнд практически бесполезен: он не видит связей, если выделение и освобождение памяти происходят в разных местах. так что только врукопашную, внимательным просмотром всего кода, с вниканием в детали, со штудированием логов и всяких трейсов. медленно, но верно. программист умнее любого компилятора и в программировании никак нельзя исключить работу мозгами, даже если она такая вот занудная.
Исходная версия Iron_Bug, :
да я не усложняю. жизнь и без того сложная штука. наоборот, надо облегчать жизнь себе и другим, и аккуратно писать код. в последнее время пришлось перелопачивать много чужого кода, доставшегося в сопровождение и доработку. в целом, неплохой код, чисто написанный, хотя и обросший костылями, потому что не было чёткого ТЗ и код развивался и дорабатывался спонтанно, под внезапно возникающие новые требования, без заранее продуманной стратегии. и там были скрытые тараканы, которые вылезли на нагрузочных тестах. мелкие утечки в сетевом анализаторе, при довольно редких условиях, в отдельных пакетах. до сих пор нет уверенности, что выловила их все. а если бы сразу писали тесты и проверяли все ветки, не было бы таких проблем с сопровождением. я, конечно, всё равно всё зачищу и разобью код на модули, которые можно будет тестировать независимо. но этот рефакторинг и ловля чужих багов отнимают время. а можно было бы потратить его на что-то полезное. поэтому я двумя руками за тестирование. в виде юнит-тестов, где можно, и со стресс-тестированием на настоящем железе.[bt]и никакой компилятор такие ошибки выявить не в силах. и даже валграйнд практически бесполезен: он не видит связей, если выделение и освобождение памяти происходят в разных местах. так что только врукопашную, внимательным просмотром всего кода, с вниканием в детали, со штудированием логов и всяких трейсов. медленно, но верно. программист умнее любого компилятора и в программировании никак нельзя исключить работу мозгами, даже если она такая вот занудная.