Первый постер, долгое время.
Я пытаюсь разработать простую программу управления проектами в качестве учебного упражнения и пытаюсь выучить и следовать хорошим практикам программирования (кодирование интерфейсов, избегание сеттеров [не совсем уверенно в этом], использование обобщений), но у меня есть несколько проблем которую я пытался исследовать и решать, но не нашел удовлетворительного решения или того, которое не имеет непосредственного смысла для меня.
В конечном итоге он будет использовать внешний интерфейс Wicket с бэкэндом Hibernate / JPA / MySQL, поэтому я использую Карты, а не списки (исключает ошибку «не может одновременно получить несколько пакетов» с Hibernate).
На базовом уровне у меня есть следующие классы:
- Проект (Timeboxes, Требования, ...)
- Timebox (Задачи, ...)
- Требование (Задачи, ...)
- Задача (...)
Из любой точки цепочки мне нужно знать, кто такие родители и дети. Я хочу знать, что timebox принадлежит определенному проекту, а также имеет задачи (которые также принадлежат требованиям).
Я написал один метод конструктора addRequirement (Requirement, Project) в Project, который добавляет требование к HashMap требований в качестве примерного примера того, что я в настоящее время считаю решением.
- Должен ли я поместить сам Проект в Требование, которое связано с ним, или просто в уникальную текстовую ссылку для поиска при необходимости?
- Должен ли я придерживаться нехватки сеттеров и идти с большими конструкторами и методами конструктора, или идти с наличием сеттеров.
- Должен ли я беспокоиться о том, что хеш-код ограничен целым числом? И я должен сделать ключ для целых чисел hashMaps, а не Strings?
Я загрузил два класса, над которыми я работаю, и любая конструктивная критика была бы очень полезна:).
Проект:
http://pastebin.com/yc1dG8FC
Требование:
http://pastebin.com/GkPvUZme
Заранее спасибо!