Я впевнений, що десь є назва цього анти-шаблону; однак я недостатньо знайомий з літературою проти зразків, щоб це знати.
Розглянемо наступний сценарій:
or0
- це членська функція в класі. На краще чи гірше, це сильно залежить від змінних членів класу. Програміст A приходить і потребує функціональності, or0
а не викликає or0
, програміст A копіює та перейменовує весь клас. Я здогадуюсь, що вона не дзвонить, or0
тому що, як я кажу, вона сильно залежить від змінних членів для її функціональності. А може, вона молодший програміст і не знає, як це викликати з іншого коду. Отже, тепер у нас є or0
і c0
(c для копії). Я не можу повністю винувати програміста А в такому підході - всі ми дотримуємося строгих термінів, і ми зламаємо код, щоб завершити роботу.
Кілька програмістів підтримують, or0
тож тепер це версія orN
. c0
зараз версія cN
. На жаль, більшість програмістів, які підтримували клас, що містив, or0
здавалося, абсолютно не знають про c0
це, - що є одним із найсильніших аргументів, про які я можу подумати про розумність принципу DRY. І, можливо, також було незалежне підтримання коду в c
. У будь-якому випадку є , що or0
і c0
підтримували незалежно один від одного. І, радість і щастя, відбувається помилка в cN
тому, що не відбувається в orN
.
Тож у мене є кілька питань:
1.) Чи існує назва цього анти-шаблону? Я бачив, як це трапляється так часто, мені важко повірити, що це не названий анти-шаблон.
2.) Я бачу кілька альтернатив:
a.) Виправити orN
прийняття параметра, який визначає значення всіх змінних членів, які йому потрібні. Потім змініть cN
виклик orN
з усіма необхідними параметрами, переданими в.
b.) Спробуйте вручну виправити поправки з orN
до cN
. (Зверніть увагу, я не хочу цього робити, але це реальна можливість.)
в.) Відновлюйся orN
- cN
повертайся, поцупи, але я перераховую це заради повноти.
г.) Спробуйте розібратися, де cN
зламана, а потім відремонтуйте її незалежно від orN
.
Альтернатива a здається найкращим виправленням у довгостроковій перспективі, але я сумніваюся, що замовник дозволить мені здійснити це. Ніколи не витрачайте часу чи грошей на те, щоб виправити речі правильно, але завжди час і гроші, щоб вирішити ту саму проблему 40 чи 50 разів, правда?
Чи може хтось запропонувати інші підходи, які я, можливо, не розглядав?