русский
Germany.ruForen → Архив Досок→ Programmierung

Делать ли рефакторинг в такой ситуации?

1259  1 2 3 alle
Simple Nothing is f*cked13.01.09 13:44
Simple
NEW 13.01.09 13:44 
1. Практически невозможно написать тест.
2. Времени в обрез.
3. Код - жуткая помойка.
4. Изменение вроде бы небольшое, но в будущем возможны и другие.
Пп. 1, 2 и 4 вроде бы голосуют против, но п. 3 орет очень громко за. Поделитесь опытом :)
#1 
megabyte завсегдатай13.01.09 15:25
megabyte
NEW 13.01.09 15:25 
in Antwort Simple 13.01.09 13:44
IMHO. Не писать из-за пп 1 и 2. Когда появится время, то внести в план написание юнит-тестов, рефакторинг и вперед.
Как вариант, написать тесты только для требуемого изменения, позже писать тесты для новых изменений, а там глядишь, руки и до глобального рефкоринга дойдут.
#2 
Simple Nothing is f*cked13.01.09 15:32
Simple
NEW 13.01.09 15:32 
in Antwort megabyte 13.01.09 15:25
Да, я тоже в итоге склоняюсь к такому решению. Проблема в том, что настоящий тест сделать ваще нельзя: код можно выполнить только у клиента.
Писать юнит-тесты можно до усрачки: очень много данных. Пока охватишь все, поседеешь :( А переделывать 700-строчный спагетти без полных тестов скорее всего выйдет боком.
#3 
megabyte завсегдатай13.01.09 15:50
megabyte
NEW 13.01.09 15:50 
in Antwort Simple 13.01.09 15:32
Можно только посочувствовать. 700 строчек одним методом/ф-цией чтоль? :-)
#4 
  scorpi_ посетитель13.01.09 16:16
NEW 13.01.09 16:16 
in Antwort Simple 13.01.09 13:44
По-моему 1 и 4 - тоже за. По поводу 2 - надо убеждать менеджмент, что так работать нельзя. По поводу 4 - если изменение локальное, то нельзя вычленить этот кусочек в отдельную функцию/класс, и написать к нему тесты?
#5 
  scorpi_ посетитель13.01.09 16:18
NEW 13.01.09 16:18 
in Antwort Simple 13.01.09 15:32
В ответ на:
Проблема в том, что настоящий тест сделать ваще нельзя: код можно выполнить только у клиента.

Даже с моками нельзя оттестировать?
#6 
AlexOtt постоялец13.01.09 16:52
AlexOtt
NEW 13.01.09 16:52 
in Antwort megabyte 13.01.09 15:50
у нас есть в проекте функция почти на 2000 строк - когда я в нее смотрю, обычно требуется пакетик, как в самолете выдают :-)
#7 
megabyte завсегдатай13.01.09 17:41
megabyte
NEW 13.01.09 17:41 
in Antwort AlexOtt 13.01.09 16:52
А что послужило причиной для такой длинной ф-ции? Нерадивый студент? :-)
#8 
Simple Nothing is f*cked13.01.09 18:56
Simple
NEW 13.01.09 18:56 
in Antwort megabyte 13.01.09 15:50
И это еще не предел :)
#9 
Simple Nothing is f*cked13.01.09 18:58
Simple
NEW 13.01.09 18:58 
in Antwort scorpi_ 13.01.09 16:16
Я уже начал. Кроме того, агитирую перейти на svn и написать build script.
Кстати, не знаешь, есnm такой тул dsp -> jam?
#10 
Simple Nothing is f*cked13.01.09 19:01
Simple
NEW 13.01.09 19:01 
in Antwort scorpi_ 13.01.09 16:18
Кажется, я опять что-то новое щас узнаю :-D Пошел в гугл.
#11 
Simple Nothing is f*cked13.01.09 19:02
Simple
NEW 13.01.09 19:02 
in Antwort megabyte 13.01.09 17:41
Причина обычно одна и та же: некогда сделать как положено.
#12 
Simple Nothing is f*cked13.01.09 19:48
Simple
13.01.09 19:48 
in Antwort AlexOtt 13.01.09 16:52
нп
Какой тест-фреймворк посоветуете взять?
#13 
AlexOtt постоялец13.01.09 20:09
AlexOtt
NEW 13.01.09 20:09 
in Antwort Simple 13.01.09 19:48
какой язык-то? :-) для С++ я пользуюсь boost::test, для эрланга - eunit, haskell - quickcheck, common lisp - xlunit
#14 
AlexOtt постоялец13.01.09 20:10
AlexOtt
NEW 13.01.09 20:10 
in Antwort megabyte 13.01.09 17:41
желание делать только быстрые исправления ошибок, а не пытаться перерабатывать архитектуру/переписывать функционал
#15 
AlexOtt постоялец13.01.09 20:11
AlexOtt
NEW 13.01.09 20:11 
in Antwort Simple 13.01.09 18:58
мы пользуемся сmake в качестве кросс-платформенной системы сборки. ну и интеграция с ctest + прокидка данных в dashboard тоже имеют свои плюсы
#16 
  scorpi_ посетитель13.01.09 20:31
NEW 13.01.09 20:31 
in Antwort Simple 13.01.09 18:58
Господи, у вас шестёрка что ли?
По инструментам - я голосую за выбор Алекса: Boost.Test и CMake.
Что касается mock-объектов, С++-frameworks меня не вполне удовлетворяют, смотри сам что тебе подойдёт: http://stackoverflow.com/questions/38493/are-there-any-good-c-mock-object-framew...
#17 
Simple Nothing is f*cked13.01.09 21:28
Simple
NEW 13.01.09 21:28 
in Antwort AlexOtt 13.01.09 20:09
Я узкий специалист :) С++. boost::test не подходит из-за компилятора.
#18 
Simple Nothing is f*cked13.01.09 21:29
Simple
NEW 13.01.09 21:29 
in Antwort scorpi_ 13.01.09 20:31
Угу. Только в старой конторе перешли на 9-ку, как мне вздумалось уйти :-D
Спасибо, посмотрю.
#19 
megabyte завсегдатай13.01.09 21:54
megabyte
NEW 13.01.09 21:54 
in Antwort Simple 13.01.09 19:48
Использую CppUnit.
#20 
1 2 3 alle