Nie suszysz, ponieważ ktoś napisał to w książce, w której warto to robić, robisz SUCHANIE, ponieważ w rzeczywistości przynosi wymierne korzyści.
W szczególności z tego pytania:
Jeśli się powtórzysz, możesz stworzyć problemy z utrzymaniem. Jeśli wszystkie doStuff1-3 mają kod o podobnej strukturze, a problem został rozwiązany w jednym, łatwo można zapomnieć o rozwiązaniu problemu w innym miejscu. Ponadto, jeśli musisz dodać nowy przypadek do obsługi, możesz po prostu przekazać różne parametry do jednej funkcji zamiast kopiować i wklejać w dowolnym miejscu.
Jednak sprytni programiści często podchodzą do skrajności. Czasami, aby się nie powtarzać, trzeba tworzyć abstrakcje tak tępe, że członkowie drużyny nie mogą ich przestrzegać. Czasami struktura dwóch rzeczy jest tylko nieco podobna, ale wystarczająco inna. Jeśli doStuff1-4 są na tyle różne, że przefakturowanie ich w taki sposób, aby się nie powtarzało, powoduje, że musisz napisać nienaturalny kod lub przejść sprytne kodowanie w tył, co spowoduje, że twój zespół będzie na ciebie patrzył, to może się powtórzyć. Pochyliłem się, żeby nie powtórzyć się kilka razy w nienaturalny sposób i żałowałem produktu końcowego.
Zasadniczo więc nie myśl „och, ten kod jest dość podobny, może powinienem zreformować się, żeby się nie powtarzać”. Pomyśl „czy refaktoryzacja, aby ta podstawa kodu ponownie wykorzystywała wspólne elementy, sprawia, że kod jest łatwiejszy w utrzymaniu, czy mniej ?” Następnie wybierz ten, który sprawia, że jest łatwiejszy w utrzymaniu.
Biorąc to pod uwagę, biorąc pod uwagę SRP i po prostu próbując ogólnie mieć małe, elastyczne klasy, sensowne może być przeanalizowanie kodu z tego powodu , podzielenie fragmentów zachowań, które używają typów ogólnych (mówiłeś, że są one identyczne inne niż typ) na małe klasy. Następnie dowiesz się, że niektóre z tych klas są całkowicie identyczne (nie tylko w większości identyczne), a następnie możesz zbudować zestaw narzędzi na wypadek, gdybyś chciał je dodać Microsoft.CodeAnalysis.CPlusPlus.Syntax.AttributeSyntax
.