Увы, если ты не предугадываешь новые требования, то и понять как писать под них - не понятно.
Ну вот и не нужно писать под неизвестные требования, нужно писать строго под текущие требования, но не неразборным куском спагетти, а формируя конструктор, из которого можно собрать много вариантов фич.