Я думаю, ви занадто далеко забираєте принцип повторення коду. Подумайте про те, щоб уникнути повторення коду. Сенс полягає в тому, щоб зменшити кількість коду, який потрібно перевірити, коли є зміна логіки, і збільшити розуміння шляхом виділення очевидно аналогічних блоків.
Недоліки розбиття факторів, щоб уникнути повторення, полягають у тому, що якщо один із загальних блоків повинен змінитися, то вам потрібно ще більш складне успадкування або певний перехід між стандартною та нестандартною реалізацією.
Тож уважно зважте можливість логіки зміни навіть одного з цих блоків без інших проти переваг розуміння, отриманих шляхом відшарування цієї спільності. Якщо одна реалізація може відокремитись від інших, вам, можливо, буде краще просто повторити код.
Підтримуючи цей повторний код, оскільки він стає складнішим, а ваша проблемна область стає більш визначеною, то ви можете вважати більш доцільним виділити повторний, тепер більш складний, але також більш визначений розділ.
Зазвичай я намагаюся деякий час підтримувати однакову редакторність текстів, поки не можу побачити, чи варто щось, що виглядає як повторюване, вартий факторингу. Я просто зберігаю повторення, але я приглядаюсь до майбутнього блоку, зберігаючи його текстуально легко згодом.
Багато часу, однаковість і можливий факторинг починають розходитись як реальні, примхливі, ділові правила і дуже залежна, часто довільна логіка; як, наприклад, спілкування з дивацтвами декількох поширених реалізацій баз даних (ANSI_NULLS або щось подібне приходить на думку); змушуючи те, що здавалося чистою логікою, у витлумачений безлад, намагаючись надати розумну, виправдану логіку рішення, зіткнувшись із безладом стану галузі.
Мені здається, що якби люди намагалися визначити те, що ви намагаєтесь визначити, ми мали б цілу бібліотеку нікчемних конструкцій, таких як Do1Then2If2False Do1IfTrueDo2.
Доводиться більш складним і зрозумілим, що блок не збирається змінюватися, щоб виправдати його.
Це програмне забезпечення . Ви можете повернутися і відредагувати пару блоків, які є однаковими зараз. Це займе 5 хвилин. І ви можете зекономити години витраченого факторингу, а потім і більше годин витраченого на спадщину та переключення розвитку, просто залишивши його та переконавшись, що у вас хороша клавіатура, що не відповідає RSI.