Próbuję wymyślić sposób analizy długowieczności kodu w projektach open source: to znaczy, jak długo określony wiersz kodu jest aktywny i używany.
Moje obecne myślenie jest takie, że długość życia kodu zaczyna się od pierwszego zatwierdzenia, a kończy, gdy nastąpi jedna z następujących sytuacji:
- Jest edytowany lub usuwany,
- Wyłączone z kompilacji,
- Przez pewien czas (na przykład rok) żaden kod w jego kompilacji nie jest utrzymywany.
UWAGA: W celu wyjaśnienia, dlaczego „edycja” jest liczona jako „śmierć”, edytowane wiersze będą liczone jako „nowa” generacja lub wiersz kodu. Ponadto, chyba że istnieje prosty sposób, aby to zrobić, nie byłoby uwzględnienia długowieczności linii ani pochodzenia od przodka.
Co jeszcze określiłoby długość linii kodu?
version-control
efficiency
błędy
źródło
źródło
Odpowiedzi:
Andy Ozment spojrzał na OpenBSD w 2006 roku z tym samym pytaniem: Milk or Wine: Czy bezpieczeństwo oprogramowania poprawia się wraz z wiekiem?
Możesz nauczyć się z jego definicji. Jest to również bardzo interesujący artykuł, z ciekawym wnioskiem, który nie został włączony do wiedzy o zarządzaniu oprogramowaniem:
źródło
Nie sądzę, żeby na to była odpowiedź. W dużym stopniu zależy to od projektu. Niektóre są bardziej stabilne na przestrzeni lat, inne są bardziej niestabilne / przekształcone / ewoluują na przestrzeni lat.
Co więcej, trudno to zmierzyć. Czy edytowana linia to naprawdę koniec jej żywotności? Co powiesz na tylko kosmetyczną zmianę, taką jak przeformatowanie bazy kodu za pomocą tabulatorów lub spacji? IMHO, które nie jest liczone jako odnowiona baza kodu, ale byłoby zgodne z Twoimi kryteriami.
To powiedziawszy, myślę, że spora część LOC żyje wiecznie.
Powód jest prosty: o wiele łatwiej jest dodać nowy kod niż go usunąć. Zwłaszcza, gdy system jest złożony i rozwija się przez lata. Następnie szybko dochodzi do punktu, w którym „ryzykowne” jest usunięcie lub zmiana nietrywialnego kodu. Może wprowadzić błędy, zepsuć kompatybilność, wprowadzić efekt motyla zmian ... Myślę więc, że im większa baza kodów, tym jest ona starsza, tym bardziej LOC pozostaną.
Co więcej, tylko dobrzy programiści mają tendencję do czyszczenia baz kodowych i zmniejszania linii. Wszyscy inni gromadzą LOC. I do tej pory te ostatnie zdecydowanie wygrywają. ;)
źródło
Usunięcie lub wykluczenie wiersza kodu zdecydowanie oznacza koniec jego żywotności.
Przypisywanie edycji, zadałbym następujące pytanie: Czy to stwierdzenie daje inny wynik po edycji?
Jeśli odpowiedź brzmi tak, to powiedziałbym, że poprzednie oświadczenie nie jest już dostępne, w przeciwnym razie nadal uważałbym je za kontynuację poprzedniego oświadczenia.
Przykład zmiany wyniku:
do:
Przykład kontynuacji życia:
do:
źródło