Если вы хотите добиться простоты повторного использования кода - нужно смотреть в сторону разбития задачи на части. Потом оформляйте части в процедуры, создавайте для них удобный для повторного использования интерфейс. Отдельное внимание уделите поиску общих мест в разных задачах, они - первые кандидаты на вынесение в функции.