Старый код имеет больше шансов выжить
Несколько лет назад у меня возникла такая ситуация. Нам (оффшоринговой команде) дали проект, над которым до этого работали девелоперы* на стороне заказчика.
Мы провели пару рефакторингов. И после этого к нам в код глянул заказчик. И задал вопрос : «почему г***о — код которому n лет в обед рефакторингами не затронут, а код который вы сами писали отрефакторен»?
И я бросил заметку «нормальна ли ситуация, когда старый код переживает новый?» в свой личный «долгий ящик».
Через какое-то время мне попалась идея про т.зв. Эффект Линды ( dou.ua/forums/topic/13137 ).
И я решил проверить ее на коде.
Т.е. я решил выяснить у какой строчки больше шансов протянуть следующие 1000 коммитов — у той, которая была закоммиченна 1000 коммитов назад — или у той, которая была закоммичена n*1000 (n>1) коммитов назад?
Для этого я взял известные **проекты с открытым кодом, которые используют mercurial*** . Для визуализации и подсчетов я выбрал ipython notebook, основной код доступен github.com/...ter/hg_st/mozilla_central.
Что у меня получилось?
Для проекта Mercurial SCM, вероятность у строки возраста 1 000 коммитов выжить еще 1000 коммитов порядка >90%, у строки возраста 5 000 коммитов вероятность <95%, у строки возраста 20 000 коммитов вероятность >98%
У большиства других проэктов подобная картина. bogdanartyushenko.blogspot.com/...ct-on-source-code-on.html
Исключение составил проект cpython.
Т.е. если у вас тоже в проекте старый и плохой (т.е. не ваш) код переживает новый и классный (т.е. написанный вами) — можете попробовать этот момент в качестве аргумента.
* в коммитах а не во времени, т.к. проект может «умереть» потом быть реанимирован и т.п.
** мне известные-)
*** мне было проще для него написать скрипты
12 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів