Odpowiedź na to pytanie jest prosta.
Spójność ma ogromne znaczenie.
ale zawiera zastrzeżenie ...
Ty i twój współpracownik prawdopodobnie macie obsesję na punkcie niewłaściwej konsystencji
Realizacje są jednorazowe. Można je całkowicie przebudować z różnym stopniem łatwości, w zależności od jakości i kompleksowości zestawu testowego. Martwiąc się o rzeczy takie jak „Czy to powinna być właściwość?”, „Czy cienki kod nie powinien używać LINQ zamiast konstrukcji niższego poziomu?” ma wątpliwą wartość. Trudno jest powiązać jakiekolwiek pomiary z wartością spójności na poziomie wdrożenia. O wiele lepszym pytaniem na tym poziomie jest „Czy ten kod działa zgodnie z reklamą?”. Spójność implementacji TL; DR polega na włączeniu hobgoblinów przez „małe umysły”.
Dlaczego spójność nie jest tutaj tak ważna? Wdrożenia zwykle mają niewielką liczbę współpracowników. Większość metod jest zapisywana i nigdy więcej nie dotykana. Z pozostałego kodu liczba metod, które mają dwóch autorów, prawie na pewno większość. Ten wzór trwa w nieskończoność . W tym kontekście spójność po prostu nie jest tak ważna. Jeśli okres przechowywania kodu jest dość mały ( kilka lat ), korzyści wynikające z agresywnej spójności są prawdopodobnie nieistotne.
Nie oznacza to, że powinieneś zwariować w swoich implementacjach. Mówi raczej, że ładny, czysty i prosty projekt będzie rzędami wielkości bardziej wartościowymi dla twojego hipotetycznego przyszłego opiekuna niż głupia metoda konsystencji płyty kotła metodą. To prowadzi nas do prawdziwego punktu ...
Interfejsy API nie są jednorazowe.
To wszystko poziom kodu API, usługi sieciowe, SDK itp. Muszą one, muszą, MUSI być spójne. Wzrost wydajności z tej różnorodności konsystencji jest ogromny z wielu powodów:
Testy integracyjne:
Jeśli utrzymasz spójność interfejsu API, możesz tworzyć pakiety testów integracyjnych. Dzięki temu programiści mogą swobodnie wymieniać szczegóły implementacji i uzyskiwać natychmiastową weryfikację. Chcesz zamienić swoje badziewie na LINQ? Czy działają testy integracyjne? Zapewnia również sprawdzanie poprawności podczas przygotowań do przejścia do produkcji. Ponieważ komputery są szybkie, pojedynczy laptop może wykonać pracę tysiąca testerów wykonujących przyziemne zadania. Jest to równoznaczne ze znacznym zwiększeniem liczby pracowników w organizacji.
Wydajność
Gdy interfejsy API są spójne, możesz zgadywać, jak korzystać z interfejsu API, po prostu postępując zgodnie z tym, czego się nauczyłeś na temat używania innych części interfejsu API. Wynika to z faktu, że interfejs API zapewnia naturalny, spójny „wygląd i działanie”. Oznacza to, że Twój klient spędza mniej czasu na przeglądaniu dokumentacji. Wbudowanie jest łatwiejsze i tańsze. Osoby, które opracowały interfejs API, zadają mniej pytań. Spójność sprawia, że wszyscy są zwycięzcami
Dlaczego spójność jest ważna w tym scenariuszu? Ponieważ interfejsy API mają dokładnie odwrotny problem z implementacjami. Liczba osób korzystających z nich jest zwykle znacznie większa niż liczba osób przyczyniających się do ich implementacji. Niewielkie zyski z niewielkiej spójności są zwielokrotniane, a koszty utrzymania tej spójności są amortyzowane.
Wniosek
Konsystencja jest droga. Na pierwszy rzut oka obniża produktywność. Ogranicza programistów i utrudnia ich życie. Ogranicza to sposób, w jaki mogą rozwiązać problem, niekiedy zmuszając go do rozwiązania go w nieoptymalny sposób. Często dzieje się tak z powodów, których nie rozumieją, są źle rozumiani lub nie są wtajemniczeni (umowy, większe zasady organizacyjne lub międzyorganizacyjne).
Raymond Hettinger napisał kilka doskonałych punktów w swoim przemówieniu Pycon 2015 na temat używania przewodnika po stylu PEP8 dla zespołów programistów pythonowych. Pokazał, że obsesja na punkcie spójności stylistycznej fragmentu kodu spowodowała, że recenzenci kodu stracili poważne wady logiczne i projektowe. Jego hipotezę można streścić, ponieważ znalezienie niespójności stylistycznych jest łatwe; ustalenie prawdziwej jakości fragmentu kodu jest trudne
Punkt tutaj jest krytyczny. Określ, gdzie spójność jest ważna i chroń ją agresywnie. Tam, gdzie to nie jest ważne, nie marnuj czasu. Jeśli nie możesz zapewnić obiektywnego sposobu pomiaru wartości spójności (w powyższych przypadkach „efektywne zatrudnienie”, koszt jako funkcja wydajności) i nie możesz wykazać, że zwroty są znaczące, prawdopodobnie robisz krzywdę Twoja organizacja.