Силогізм:
Загальність дорога.
Ви витрачаєте чужі гроші.
Тому витрати на загальність повинні бути виправдані для зацікавлених сторін.
Запитайте себе, чи справді ви вирішуєте більш загальну проблему, щоб згодом заощадити гроші зацікавлених сторін, чи просто ви вважаєте інтелектуальним завданням прийняти непотрібне загальне рішення.
Якщо загальність визначається як бажана, то вона повинна бути розроблена і перевірена, як і будь-яка інша особливість . Якщо ви не можете написати тести, які демонструють, як реалізована вами загальна проблема вирішує проблему, яку вимагає специфікація, тоді не турбуйтеся робити це! Особливість, яка не відповідає критеріям дизайну і не може бути протестована, є особливістю, на яку ніхто не може покластися.
І нарешті, не існує такого поняття, як "максимально загальне". Припустимо, ви пишете програмне забезпечення на C #, просто заради аргументу. Ви збираєтесь змусити кожен клас реалізувати інтерфейс? Кожен клас абстрактний базовий клас з кожним методом абстрактний метод? Це досить загально, але він ніде не є "таким загальним", як це можливо. Це просто дозволяє людям змінити реалізацію будь-якого методу через підкласифікацію. Що робити, якщо вони хочуть змінити реалізацію методу без підкласингу? Ви можете зробити кожен метод фактично властивістю типу делегата, із сетером, щоб люди могли змінити кожен метод на щось інше. Але що робити, якщо хтось хоче додати більше методів? Тепер кожен об'єкт має бути розширеним.
У цей момент вам слід відмовитися від C # і прийняти JavaScript. Але ви все ще не дісталися ніде поблизу досить загального; що робити, якщо хтось хоче змінити, як шукає член для цього конкретного об'єкта? Можливо, вам слід написати все на Python.
Збільшення загальності часто означає відмову від передбачуваності та масового збільшення витрат на тести, щоб гарантувати, що реалізована спільність насправді досягає реальної потреби користувача . Чи виправдані ці витрати своїми вигодами для зацікавлених сторін, які платять за них? Можливо, вони є; Вам належить обговорити із зацікавленими сторонами. Мої зацікавлені сторони зовсім не бажають, щоб я відмовився від статичного введення тексту в пошуках абсолютно непотрібного і надзвичайно дорогого рівня загальності, але, можливо, ви є.