Я дуже вірую у розробку цієї проблеми і не роздуваю ваш дизайн, намагаючись відгадати усі випадки, які вам доведеться задовольнити, оскільки "колись нам це може знадобитися".
В основному, враховуючи перелік конкретних вимог, спроектуйте це, однак це не означає, що не слід:
- зробіть аспекти вашого дизайну налаштованими, а не жорстким кодуванням цих аспектів у вашому рішенні. Або через параметри, передані під час виконання, або через зовнішню конфігурацію, прочитану при запуску (або після HUP'ing).
- зашнуруйте свій код магічними цифрами,
- уникайте перегляду, чи є щось вже написане, що ви можете повторно використовувати, можливо після адаптації існуючого рішення, щоб забезпечити підхід, який підходить як для існуючої ситуації, так і для нових вимог.
Основна проблема при розробці "можливих ф'ючерсів" полягає в тому, що ви завжди просто здогадуєтесь. Можливо, робити освічені здогадки, але "коли наштовхнувся наштовхнутися", це все ще лише ряд здогадок.
Тим самим у вас є також реальна можливість притиснути ваше рішення до загального випадку, а не вирішити конкретну проблему, як визначено вашими відомими вимогами.
Що це говорить? "Коли все, що у вас є, є молоток, все починає виглядати як цвях".
Мені б хотілося, щоб я мав фунт кожного разу, коли я чув, щоб хтось сказав: "Але це рішення, яке є більш пристосованим для тих загальних випадків, які ми могли б побачити в майбутньому".