Її бажано видалити, b()
коли вона більше не використовується, з тієї ж причини, що бажано в першу чергу не додавати невикористані функції. Незалежно від того, чи називаєте ви це "читабельністю" чи чимось іншим, а при рівності - це поліпшення коду, який не містить нічого, для чого він не має жодної користі. Для того, щоб мати хоча б один конкретний захід, за допомогою якого його краще не мати, його усунення гарантує, що його майбутня вартість технічного обслуговування після цієї зміни дорівнює нулю!
Я не знайшов будь-якої спеціальної техніки, яка потрібна для її фактичного видалення з її тестів, оскільки будь-яка думка замінити b()
чимось новим, звичайно, повинна супроводжуватися врахуванням всього коду, який зараз викликає b()
, а тести є підмножиною "всього коду ".
Лінія міркувань, як правило , працює для мене є те , що в момент , коли я помітив , що f()
зробив b()
застарілим, тому b()
має бути , по крайней мере застарілим, і я шукаю , щоб знайти всі дзвінки b()
з метою заміни їх дзвінків f()
, I врахуйте також код тесту . Зокрема, якщо b()
це більше не потрібно, я можу і повинен видалити його одиничні тести.
Ви цілком правильні, що ніщо не змушує мене помітити, що b()
більше не потрібно. Це питання навички (і, як стверджує тонкий, звіт про покриття коду про тести вищого рівня). Якщо стосуються лише тестів на одиниці, а не функціональних тестів, b()
то я можу бути обережно оптимістичним, що він не є частиною жодного опублікованого інтерфейсу, і тому його видалення не є переломною зміною для будь-якого коду, який не знаходиться під моїм безпосереднім контролем.
Цикл червоний / зелений / рефактор прямо не вказує на видалення тестів. Крім того, видалення b()
порушує відкритий / закритий принцип , так як очевидно , ваш компонент є відкритим для модифікації. Тож якщо ви хочете сприймати цей крок як щось поза простою TDD, продовжуйте. Наприклад, у вас може бути якийсь процес для оголошення тесту «поганим», який можна застосувати в цьому випадку для видалення тесту на тій підставі, що він перевіряє те, чого там не повинно бути (непотрібна функція b()
).
Я думаю, що на практиці більшість людей, ймовірно, дозволяють здійснити певну кількість оновлень разом із циклом червоний / зелений / рефактор, або вони вважають, що видалення зайвих тестів є дійсною частиною "рефактора", хоча строго кажучи це не рефакторинг. Ваша команда може вирішити, скільки драматизму та оформлення документів повинно бути залучено для обґрунтування цього рішення.
У будь-якому разі, якби це b()
було важливо, тоді для нього існували б функціональні тести, і їх не можна було б видалити злегка, але ви вже сказали, що є лише одиничні тести. Якщо ви належним чином не розрізняєте одиничні тести (написані в поточному внутрішньому дизайні коду, який ви змінили), і функціональні тести (написані на опублікованих інтерфейсах, які, можливо, ви не хочете змінювати), вам потрібно бути обережнішими. про видалення одиничних тестів.