У меня тоже есть некоторые рекомендации:
1) Используйте Maven и разделяйте ваше приложение на модули (представление, контроллер, сервис, постоянство, утилиты, модель). Убедитесь, что вы помещаете свои компоненты и зависимости Swing только в пакет представления, поэтому, если вы когда-нибудь захотите изменить среду представления, вы можете просто переопределить модуль представления, но вы можете оставить свою бизнес-логику, контроллеры и т. Д. Без изменений.
2) Используйте GridBagLayout, потому что он очень гибкий и наиболее настраиваемый
3) Используйте SwingTemplate (могу привести пример, если хотите)
4) Создайте SwingFactory, которая создает компоненты, так что вы можете уменьшить количество строк кода, поскольку JFrames или слишком большие классы ...
5) Пусть представление (JFrame, JDialog и т. Д.) Зависит от контроллеров. Вводите валидацию только в JFrames, но затем передавайте параметры в контроллеры. Они решат, какая бизнес-логика (служба, процессоры и т. Д.) Будет запущена.
6) Использовать много перечислений
7) Всегда думайте, как ваше приложение может измениться или как его можно поддерживать. Поэтому всегда используйте код против интерфейсов или абстрактных классов. (Думай абстрактно)
8) Используйте шаблоны проектирования в своем приложении, поскольку они обеспечивают согласованность и удобство сопровождения вашего кода. Сделайте, например, все ваши контроллеры, сервисы, синглтон-классы dao. Создавайте фабрики (swingfactory, ...), чтобы вам приходилось писать меньше кода снова и снова .... Используйте наблюдатели, чтобы действия могли обрабатываться автоматически.
9) Проверьте вашу заявку: выберите один из вариантов: TDD (тестирование по проекту) или DDT (тестирование по проекту)
10) Никогда не помещайте бизнес-логику в JFrames, потому что это уродливо и не очень дизайн Model-View-Controller. JFrames не интересуются тем, как обрабатываются данные.
Надеюсь, это поможет.