Aktualnie pracuję nad projektem niezależnym, więc nie mam luksusu w testach na ludziach ani przeglądaniu kodu zewnętrznego - jednak nie widzę żadnych trudnych błędów w moim bieżącym kodzie (naprawiam je tak, jak je widzę) , i przez większość czasu są to po prostu złe nazwy pól i takie rzeczy, które naprawiasz za minutę lub dwie), a ja testuję to po zaimplementowaniu dowolnej funkcji przed jej przekazaniem. Ostatnio mój numer LOC wynosił około 400 dziennie (dla przypomnienia, to C #), i nie tylko wdrażam nowe systemy, ale także przepisuję rzeczy, które już napisałem i naprawiam kilka błędów.
Czy powinienem się martwić? Czy to znak, że muszę zatrzymać i przejrzeć cały kod, który do tej pory pisałem, i zrefakturować?
c#
refactoring
Max Yankov
źródło
źródło
Odpowiedzi:
LOC jest prawdopodobnie jednym z najbardziej nadużywanych wskaźników, w wyniku czego jest prawdopodobnie jedną z bardziej bezużytecznych miar jakości kodu i jeszcze bardziej bezużytecznym pomiarem wysiłku programistycznego.
Tak, to odważne stwierdzenie, które mogę wypowiedzieć, i nie, nie mogę skierować cię na studia potwierdzające mój punkt widzenia. Jednak z ciężkim doświadczeniem mogę stwierdzić, że kiedy zaczynasz się martwić ilością napisanego kodu, prawdopodobnie martwisz się niewłaściwymi problemami.
Najpierw musisz zadać sobie pytanie, co próbujesz zmierzyć lub udowodnić, i czy ten dowód jest po prostu poza zainteresowaniem, czy też może wspierać szerszą poprawę jakości i gdzie musisz użyć tych informacji, aby uzyskać wpis od swojego zespołu / zarząd, aby coś z tym zrobić.
Jedną z rzeczy, do których zwykle używam LOC, jest kontrola zdrowia psychicznego. Jeśli piszę dużo kodu, bardziej interesuje mnie LOC według metody lub LOC według klasy, a nie LOC. Pomiary te mogą być wskaźnikami, które należy poddać dalszemu refaktoryzacji, jeśli czujesz się trochę obsesyjnie na temat tego, jak dobrze powinien być uwzględniony Twój kod. Bardzo duże klasy mogą wymagać przekształcenia w kilka mniejszych klas, a długie wieloliniowe metody mogą wymagać podziału na kilka metod, inne klasy, a nawet mogą wskazywać na pewne powtórzenia, które można usunąć. Zauważ, że użyłem tam słowa „może” kilka razy.
W rzeczywistości LOC zapewnia tylko możliwy wskaźnik i nie ma prawdziwej gwarancji, że Twój kod może wymagać zmiany. Rzeczywistym pytaniem jest, czy kod zachowuje się zgodnie z wymaganiami i oczekiwaniami. Jeśli tak, to następne pytanie dotyczy tego, czy będziesz w stanie łatwo utrzymać kod i czy będziesz miał czas, czy teraz, czy w przyszłości, aby wprowadzić zmiany w działającym kodzie, aby zmniejszyć koszty utrzymania w przyszłości.
Często dużo kodu oznacza, że będziesz musiał później zachować więcej, ale czasami nawet dobrze skonstruowany kod może rozciągać się na setki linii kodu, i tak, czasami możesz napisać setki linii kodu dziennie. Doświadczenie mówi mi jednak, że jeśli codziennie otrzymuję setki wierszy nowego kodu, często istnieje ryzyko, że znaczna część kodu została niewłaściwie wycięta i wklejona gdzie indziej, a to samo w sobie może wskazywać na problemy z powielanie i konserwacja, ale znowu nie jest to gwarancją, więc zwykle polegam na tym, co mówią moje doświadczenia i instynkty w oparciu o to, jak zrealizowano zadania.
Najlepszym sposobem na uniknięcie dylematu postawionego w pytaniu IMHO jest zapomnienie o LOC i refaktoryzacja CAŁEGO czasu. Najpierw napisz test kodu, zaimplementuj, aby zakończyć się niepowodzeniem, przeprowadź refaktoryzację, a następnie sprawdź, co można tam refaktoryzować, a następnie popraw kod. Opuścisz zadanie wiedząc, że już dwukrotnie sprawdziłeś swoją pracę, i nie będziesz się tak przejmował zgadywaniem siebie w przyszłości. Realistycznie rzecz biorąc, jeśli zastosujesz podejście testowe zgodnie z tym, co opisałem, każdy pomiar LOC / dzień na ukończonym kodzie naprawdę oznacza, że napisałeś 3-5 razy zmierzoną ilość, a wysiłek ten został skutecznie ukryty przez ciągłe refaktoryzowanie starania.
źródło
Wcale nie - w niektóre dni naprawiasz trudny do znalezienia błąd i zmieniasz tylko jedną linię. W inne dni dodajesz nowy kod i piszesz kilka tysięcy wierszy.
Daily LOC nie mówi nic poza tym, że zadania na ten dzień można wykonać za pomocą 400 linii kodu.
źródło
Niektóre z tych odpowiedzi nie mają sensu, nie używasz LOC jako miernika produktywności (gdybyś był, nie martwiłbyś się zbytnią „produktywnością”), tak naprawdę martwisz się o jakość kodu, ponieważ kod jest wrogiem, dlatego warto się martwić.
Niestety jedynym sposobem, aby dowiedzieć się o jakości kodu, jest przegląd kodu, ponieważ jesteś zespołem jednoosobowym, będzie to trudne, nawet jeśli przestałeś sprawdzać swój kod (a tak naprawdę nie chcesz przestać, prawda?) Przeglądając swój własny kod nie ujawni tak wiele, jak peer recenzujący Twój kod. Sugeruję, aby poprosić kogoś o sprawdzenie przynajmniej części twojego kodu, abyś mógł stwierdzić, czy twój 400 LOC / dzień wydaje bełkot, czy nie. Pomoże tu nawet niezależna recenzja kodu jednodniowego
źródło
Nie powinieneś przejmować się ilością LOC wytwarzanych dziennie.
Ale powinieneś się martwić:
źródło
LOC jest „oficjalną” miarą produktywności, ale argumenty przeciwko jego wartości mogą być długotrwałe (ORM może wygenerować 50 000 wierszy kodu w ciągu 3 minut, jednak jeśli projekt bazy danych jest nieprawidłowy, cały ten kod może trafić do kosza).
Sugeruję, abyś mierzył swoje postępy, śledząc% wykonanych zadań w funkcji czasu w porównaniu do% zadań planowanych do ukończenia. To się liczy. Klienci płacą za działający kod, który zapewnia wartość biznesową, a nie LOC.
Niektóre referencje na temat LOC
Przeciw: LOC - najbardziej bezsensowna miara
Neutralny do pewnego stopnia: Wiki-LOC
Pro (nie zgadzam się z większością, ale możesz rzucić okiem): Diseconomies of Scale i Lines of Code
źródło
Czy mierzysz także liczbę duplikatów kodu ?
Jeśli wysoka wydajność wynika z tego, że masz dużo kodu do kopiowania i wklejania , powinieneś się martwić.
Powód: w przypadku wystąpienia błędu w źródle kopiowania i wklejania, trudne i podatne na błędy jest naprawienie wszystkich zastosowań kopiowania i wklejania
źródło
Jeśli wierzysz w piękny kod funkcjonalny, powinien to być twój jedyny sposób
źródło