Myślę, że przesadzasz z zasadą powtarzania kodu. Pomyśl o punkcie unikania powtarzania kodu. Chodzi o to, aby zmniejszyć ilość kodu, który należy sprawdzić, gdy nastąpi zmiana w logice, i zwiększyć zrozumienie, biorąc pod uwagę oczywiście podobnie zaprojektowane bloki.
Wadami faktoringu w celu uniknięcia powtórzeń jest to, że jeśli jeden ze współdzielonych bloków musi się zmienić, teraz potrzebujesz jeszcze bardziej złożonego dziedziczenia lub przełączania między implementacją standardową i niestandardową.
Ostrożnie rozważ więc możliwość zmiany logiki nawet jednego z tych bloków bez innych względem korzyści płynących ze zrozumienia uzyskanych dzięki uwzględnieniu tej podobieństwa. Jeśli jedna implementacja mogłaby oddzielić się od innych, lepiej byłoby po prostu powtórzyć kod.
Utrzymując ten powtarzający się kod, ponieważ staje się on bardziej złożony, a twoja domena problemowa staje się bardziej zdefiniowana, możesz wtedy uznać, że bardziej odpowiednie będzie uwzględnienie powtarzających się, teraz bardziej złożonych, ale także bardziej zdefiniowanych sekcji.
Zwykle staram się przez chwilę zachować identyczność edytora tekstu, dopóki nie zobaczę, czy coś, co wydaje się powtarzalne, okazuje się warte faktorowania. Po prostu powtarzam, ale nie spuszczam oka z przyszłości tego bloku, dzięki czemu łatwo później dopasować tekstowo.
Dużo czasu ta sama tożsamość i możliwy faktoring zaczynają się rozpraszać jako prawdziwe, kapryśne reguły biznesowe i wysoce zależna, często arbitralna logika; dodaje się, jak radzenie sobie z dziwactwami wielu typowych implementacji baz danych (ANSI_NULLS lub niektóre podobne) zmuszając coś, co wydawało się czystą logiką, do pokręconego bałaganu, próbując zapewnić rozsądną, dającą się obronić logikę decyzyjną w obliczu bałaganu panującego w branży.
Wydaje mi się, że gdyby ludzie próbowali oddzielić to, co próbujesz uwzględnić, mielibyśmy całą bibliotekę bezwartościowych konstrukcji, takich jak Do1Then2If2False Do1IfTrueDo2.
Musi być bardziej złożone i bardziej jasne, że blok nie zmieni się, aby uzasadnić faktoring.
To oprogramowanie . Możesz wrócić i edytować kilka takich samych bloków. Zajmie to 5 minut. I możesz zaoszczędzić godziny zmarnowanego faktoringu, a następnie godziny zmarnowanego dziedziczenia i przełączania rozwoju, po prostu go zostawiając i upewniając się, że masz dobrą klawiaturę przeciw RSI.