Який код краще, може залежати від досвіду програмістів, а також від інструментів, які вони використовують. Наприклад, ось чому, що зазвичай вважається неякісно написаним кодом, може бути ефективнішим у деяких ситуаціях, ніж добре написаний об'єктно-орієнтований код, який повністю використовує спадщину:
(1) Деякі програмісти просто не мають інтуїтивного розуміння об'єктно-орієнтованого програмування. Якщо ваша метафора для програмного проекту - електрична ланцюг, то вас чекає багато дублювання коду. Вам подобається бачити більш-менш однакові методи у багатьох класах. Вони змусять себе почувати себе як вдома. І проект, де вам доведеться шукати методи в батьківських класах або навіть у класах бабусь і дідусів, щоб побачити, що відбувається, може відчувати себе ворожо. Ви не хочете розуміти, як працює батьківський клас, а потім розумієте, чим відрізняється поточний клас. Ви хочете безпосередньо зрозуміти, як працює поточний клас, і виявите той факт, що інформація поширюється на кілька файлів, що плутають.
Крім того, коли ви просто хочете вирішити конкретну проблему в конкретному класі, можливо, вам не сподобається думати про те, щоб виправити проблему безпосередньо в базовому класі або перезаписати метод у поточний цікавий клас. (Без успадкування вам не доведеться приймати свідоме рішення. За замовчуванням - просто ігнорувати подібні проблеми в подібних класах, поки вони не повідомляться про помилки.) Цей останній аспект насправді не є дійсним аргументом, хоча це може пояснити деякі з опозиція.
(2) Деякі програмісти багато використовують налагоджувач. Навіть незважаючи на те, що я взагалі твердо сторона наслідування коду та запобігання дублюванню, я поділяю деякі розлади, які я описав у (1), під час налагодження об'єктно-орієнтованого коду. Коли ви стежите за виконанням коду, він іноді продовжує стрибати між класами (предка), навіть якщо він залишається в одному об'єкті. Крім того, при встановленні точки перерви у добре написаному коді швидше спрацьовує, коли це не корисно, тому вам, можливо, доведеться витратити зусилля на те, щоб зробити це умовним (де це практично) або навіть ручним продовженням багато разів перед відповідним тригером.