Если вы не выполняли эту работу много раз, вы всегда будете получать код спагетти. На самом деле, на данный момент, вы только начали: у вас есть черновик предварительной спецификации. Ознакомьтесь с некоторыми другими советами здесь и сделайте некоторые серьезные переписывания. А потом еще немного переписать, а потом ... Лично я никогда не уверен, приду ли я своему коду в отличной форме или мне просто надоело переписывать его, но, похоже , я все-таки понял это правильно.
Решать проблему с двух сторон. Постарайтесь , чтобы получить общий дизайн , чтобы понять и выбрать мелкие детали , которые занимаются простыми делами и сделать их право. Затем попробуйте проложить путь с обоих концов к середине. А затем работайте от середины спины к обоим концам. Затем сверху вниз, затем снизу вверх. Затем повторите весь процесс.
По сути, у вас есть коллекция классов. Рассмотрим класс А. Если класс А построен хорошо, то классы, которые его используют, автоматически будут работать лучше, какими бы хорошими или плохими они ни были. Если класс A использует классы хорошо, эти используемые классы будут делать больше, какими бы хорошими или плохими они ни были. Так что организуйте свои занятия как можно лучше, а затем убедитесь, что каждый из них является лучшим из всех возможных.
Важно сделать все как можно лучше. Плохой код будет преследовать вас до того дня, когда вы его выбросите. С программным обеспечением немного дополнительной полировки всегда окупается. (Если никто не заканчивает тем, что использовал код ....)
Подводя итог: ознакомьтесь с реальными советами, данными в других ответах, затем переписывайте свой код, пока не получите то, что вам нравится.