Спадщина означає будь-який код, який ви краще заміните, ніж працюєте. Враховуючи ставлення більшості програмістів до більшості існуючих кодів, це, як правило, включає майже все, крім того, що ви зараз активно пишете (і для великого проекту, де вам потрібно кодувати заморожений дизайн, навіть те, що ви пишете в момент можна також включити).
- Наголос "скоріше" призначений для того, щоб переконати, що застарілий код також означає, що ви затрималися працювати з ним, хоча і не хочете. Я не впевнений, що наголос був достатнім. Причини цього можуть бути різними. Деякі насправді є занадто великими і складними для заміни. Інші - це інтерфейси до інших систем. Інші люди керуються політикою та персоналіями (наприклад, код жахливий, але будка немовля була дивовижною).
- Ще один момент, який я, можливо, не наголосив достатньо на тому, що, хоча якість коду може бути фактором, він рідко (якщо взагалі є) єдиним фактором - а часто навіть не особливо важливим.
- Я думаю, що люди, що підштовхують тести до одиниць , є єдиним визначальним фактором, як хлопець, що дивиться під вуличне світло для сережки, яку його дружина відкинула. Світло може бути кращим, але ви все ще шукаєте в неправильному місці. Подумайте, перш ніж випити пит-кула .
- (Дослідження до 3.) Мені здається, що деякі люди більше говорять про те, як вони бажають, щоб все було, ніж про те, як вони є насправді. Якщо « Життя життя Джона Конвейса для Apple IIc Plus» не є спадщиною, то це тому, що це достатньо мало і просто, що легко реалізувати з нуля. Найдосконаліше одиничне тестування, яке колись написано, не змінить жодної йоти .
Останній пункт дійсно веде до двох інших пунктів, які, на мою думку, часто відповідають дійсності.
По-перше, код часто зберігається як спадщина, навіть коли він насправді не повинен бути. Зазвичай керівники вищого рівня припускають, що повторна реалізація системи обійдеться стільки ж, скільки дорожчала початкова реалізація, що рідко буває так.
По-друге, одиничні випробування - це меч з двома ребрами. Вони змушують занадто легко думати, що важливі значення мають локалізовані зміни в реалізації. Щоб зробити значні вдосконалення в більшій системі, вам часто (зазвичай?) Доводиться досить змінювати загальну конструкцію, щоб багато (якщо не більшість) тестових приладів стали неактуальними. На жаль, наявність одиничних тестів та відношення, яке вони формують, можуть зробити занадто легко ігнорувати зміни, які справді необхідні.
Можливо, приклад цього допоможе: припустимо, що програма має бібліотеку інтерфейсу користувача з великим тестуванням одиниць і декілька програм, які використовують цю бібліотеку. Хтось із вищого керівництва переконується, що "ввімкнено Інтернет" є важливим (і, просто для аргументації, припустимо, що в цьому випадку він насправді в цьому прав). Після ретельного огляду менеджери середніх служб виявляють, що їх тестування на сьогоднішній блок достатньо, щоб вони могли змінитись із користувальницького інтерфейсу, який відображається за допомогою можливості віконної локальної операційної системи, щоб відображатися віддалено через HTML / CSS / AJAX, зберігаючи всю початкову перевірку вхідних даних.
Це чудово, чи не так? Він показує, наскільки корисним може бути тестування одиниць. Ми замінили всю реалізацію всього інтерфейсу, але переконалися, що зовнішній вигляд, відчуття та функціональність залишаються практично послідовними, а всі дані користувачів перевірені для забезпечення цілісності даних. Блок тестування врятував день!
Чи ні! Ця велика, гнучка, ретельно перевірена бібліотека користувальницького інтерфейсу допомогла засліпити всіх причетних до того, що для цієї програми на ринку з її користувачами веб-інтерфейс - це зовсім неправильна справа. Насправді потрібен веб-сервіс з RESTful інтерфейсом і абсолютно не має власного інтерфейсу.
Тепер, безумовно, вірно, що одиничне тестування саме по собі не знімає здатність людей розуміти свій ринок або усвідомлювати, що це дійсно потрібно. У той же час стара думка про молотки та цвяхи практично не залишається на увазі. Це може бути ще гірше, коли ви не тільки маєте молоток, але маєте великий досвід роботи з цим молотком, і знайте, що це дійсно якісний молоток, який неймовірно добре працює у багатьох різних ситуаціях. Сам факт, що так багато речей у стількох ситуаціях, ще важче розпізнає, коли це зовсім неправильний інструмент для роботи.