Oto, co robimy w mojej pracy:
Wszyscy używamy Eclipse. Nie mamy zasad korzystania z Eclipse, ale jakoś żaden z nas nie jest typem IDEA/IntelliJ. Uważamy również, że nasz kod powinien zostać napisany z myślą o dziedzictwie. Oznacza to, że nasz kod musi być czytelny w pewien sposób nawet po latach (# 1) bez względu na to, kto to napisał i czy ta osoba jest już w firmie.
Eclipse ma kilka poręcznych funkcji, automatyczny format zapisu i konkretny Formatter tool. Jak widać na połączonym zrzucie ekranu, można go skonfigurować za pomocą XML. W związku z tym istnieje grupa wstępnie przygotowanych plików XML: s dostępnych dla każdego pracownika w naszej firmie, tak więc gdy pojawia się nowy facet, przeprowadzamy go przez cały proces i konfigurujemy jego Eclipse (tak, to jest trochę zła rzecz, aby zrobić) tak, aby faktycznie używał formatowania XML: s, które dostarczyliśmy. Robimy , a nie wymuszamy automatyczny format zapisu, nie chcemy być całkowicie inwazyjni, chcemy tylko popchnąć wszystkich naszych programistów we właściwe kierunki. Aby zwiększyć kompatybilność, używamy głównie reguł zdefiniowanych w JCC.
Następna jest ważna część, rzeczywiste kompilacje. Jesteśmy tymi, którzy korzystają z automatycznych buildów i do tego używamy Hudson Continuous Integration Server. W naszych konfiguracjach są dwie ważne części:
Checkstyle Plugin jest magik w naszym stylu kod prowadzącej egzekwowanie line:
- Po popełnienia kod do CVS, Hudson kompilacji jest wyzwalane
- Po budowa została zakończona pomyślnie (wszystkie testy jednostkowe pass itp.), Checkstyle sprawdza rzeczywiste pliki źródłowe
- Checkstyle klasyfikuje reguły oparte na kodach, które dla niego zdefiniowaliśmy
- Ciągła integracja acji Gra widzi wynik Checkstyle i nagrody/gładzi punktów dla osoby, która ma prawo własności do odpowiedniej części kodu
- Liderów pokazuje sumę punktów za każde commiter w systemie
Zasadniczo oznacza to, że kiedy ktokolwiek popełnia brzydki kod w naszym CVS, nasz serwer kompilacji automatycznie redukuje punkty tej osoby.
Oznacza to, że ostatecznie każdy z nas może znaleźć się na liście rankingowej w oparciu o ogólną jakość kodu zarówno w wyglądzie, jak i zasadach OO, takich jak Prawo Demeter, Złożoność cykliczna itd. Oczywiście nie jest to całkowicie poważne statystyki, ale jest to dobra wskazówka, że robisz coś złego, gdy inicjacja kompilacji w naszym CI nie zmniejszy twoich punktów - większość naszych zobowiązań jest warta od 1 do 5 punktów.
Czy to działa?Tak, nie sądzę, że ktokolwiek z nas w mojej pracy pisze brzydki lub nieosiągalny kod i osobiście uwielbiam polować na wszystkie rodzaje wyników, więc zdecydowanie motywuje mnie do stworzenia kodu, który wygląda ładnie i podąża za wszystkimi paradygmatami OO, które znam.
Czy my jako firma naprawdę tego potrzebujemy? Myślę, że robimy, co powinieneś zobaczyć czytając tę całą odpowiedź, można ją uważać za dobrą praktykę w zakresie osiągnięć, jakie przynosi.
#1
: w pokrewnej notatki, ja refactored kod starszego od 2002 dzisiaj, który korzystał tych norm, nie patrzeć „zły” w ogóle, nawet w jego pierwotnej formie i na pewno nie gorszy w swojej nowej formie
To jest meta dyskusja i naprawdę należy do meta.stackoverflow.com – Josh
@Josh, nie sądzę. Pytanie nie dotyczy StackOverflow. –