Kodowanie „standardów” ... Istnieje wiele obszarów rozwoju, które można znormalizować. Czy mówimy o konwencjach kodowania, takich jak standardy nazewnictwa itp.? Czy mówimy o czymś głębszym, takim jak TDD / BDD, CI itp.?
Mogę powiedzieć, że przestrzeganie metodologii „pierwszy test”, z wymuszaniem przekazywania testów przez CI i dobrym pokryciem kodu, zmniejsza liczbę błędów wykrytych przez klienta. Zautomatyzowane testowanie, zarówno przez programistę, jak i QA, jest również stosunkowo „tanim” sposobem na znalezienie błędów, ponieważ zazwyczaj mają one bardzo krótki czas reakcji. Możesz wiedzieć, że nie napisałeś tego, co napisałeś, przeprowadzając testy jednostkowe o wartości około 45 sekund. Kilka godzin testów integracyjnych pozwoli znaleźć miejsca, w których łączenie elementów nie poszło zgodnie z planem, a kompleksowe i zautomatyzowane testy interfejsu użytkownika mogą szybko wykryć usterki funkcjonalne w oprogramowaniu na bardzo wysokim poziomie.
Zapobiegają również regresji. Znalazłeś błąd. Piszesz test, który udowodni, że takie zachowanie już nie występuje, kodujesz, dopóki test się nie powiedzie, a teraz masz test, który od tego momentu sprawi, że błąd nigdy więcej nie będzie problemem. Z mojego doświadczenia wynika, że jest to główne źródło nowych błędów; naprawienie jednej rzeczy psuje coś innego, a testowanie poprawki przez programistę może nie obejmować tej innej, która jest teraz zepsuta. Przełamywanie rzeczy, które kiedyś działały, to OGROMNA czerwona flaga dla Twoich klientów.
Wreszcie, ta zautomatyzowana struktura testowa, którą zbudujesz w ramach tej metodologii, bardzo łatwo da ci środowisko, w którym możesz wypuścić nową wersję oprogramowania w dosłownie chwili. „Hej, właśnie naprawiony błąd powodował prawdziwe bóle głowy; kiedy będziesz gotowy w nowej wersji?” kliknij „Och, za około 5 minut, kiedy serwer kompilacji zakończy publikowanie na stronie pobierania”.
Jeśli chodzi o podstawowe konwencje kodowania, takie jak standaryzacja nazw zmiennych itp., Większość z nich okazała się mniej przydatna i bardziej irytująca. Są to standardy, które są „wspaniałe, ponieważ jest ich tak wiele do wyboru”. To, co postrzegasz jako różnicę między identyfikatorem PascalCased i camelCased, może nie być tym, co myśli ktoś inny. Wiodące podkreślenia, ograniczenia długości nazw (lub wymagania, które nazwy metod / pól opowiadają); inne niż konwencje wymuszane przez kompilator lub powszechnie spotykane w kodzie biblioteki specyficznym dla języka, nowoczesne IDE może powiedzieć ci wszystko, co musisz wiedzieć o zmiennej lub funkcji, w tym czy powinieneś, czy nie powinieneś próbować używać go w określonym okoliczność. Ponadto uruchomienie sprawdzania konwencji kodu często zwróci problemy z kodem, którego nie można lub nie można chcesz zmienić, jak biblioteka innej firmy, która używała innego zestawu standardów, lub kod interop, który może być zgodny ze standardami nazewnictwa Win API zamiast ze standardami twojego języka ojczystego. W końcu dodajesz cruft do kodu, aby Twoje narzędzie zignorowało cruft w kodzie.