Существует ли какой-либо инструмент / программное обеспечение, которое разделяет логику Java Swing GUI и бизнес-логику? - PullRequest
3 голосов
/ 08 марта 2011

Я работал над проектом Java Swing.Его дизайн довольно скудный.Мне дали задание сделать его дизайн лучше.Прежде всего я думал, что отделю Java Swing-код и бизнес-код, следуя шаблону MVC.

Выполнение этих действий вручную может привести к ошибкамСуществует ли какой-либо инструмент / программное обеспечение, которое разделяет код уровня GUI (написанный на Java Swing) и код бизнес-уровня (написанный на ядре Java).

Ответы [ 4 ]

3 голосов
/ 08 марта 2011

Насколько я могу судить, ответ на этот вопрос: "Нет, такого инструмента нет".

Я бы рискнул предположить, что кто-то может создать такой инструмент. Проблема в том, что не существует простого способа провести различие между «бизнес-логикой» и кодом «GUI».

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

Я не завидую твоей задаче. Работа и изменение существующего кода, особенно кода, который вы не создавали, подвержены ошибкам. И вся концепция MVC-программирования - это просто способ думать о том, как создать программу, а не набор существующих библиотек инструментов для использования.

Я изучил программирование MVC еще во времена Smalltalk, когда он был изобретен умными людьми в Xerox Parc, и даже они не могли избежать некоторой перекрестной связи кода.

2 голосов
/ 08 марта 2011

Автоматизированные инструменты работают хорошо, когда входные данные четко определены и структурированы. Исходя из того, что вы описали, ваш вклад далек от этого.

Да, выполнение этой работы будет сложным и много работы. Но это то, что вам просто нужно закатать рукава и погрузиться в него. Прежде чем начать трогать код, сядьте и убедитесь, что вы полностью понимаете, как все устроено сейчас (и почему это плохо). Тогда начните планировать, как бы вы сделали это лучше.

Теперь, когда у вас есть план того, как все должно быть, начните работать с кодом и обновлять устаревший код.

1 голос
/ 08 марта 2011

Нет инструмента, но есть методы.

Рефакторинг - это практика небольших изменений в коде для изменения его архитектуры без изменения его функции.Возможно, вы уже выполнили рефакторинг до некоторой степени, но иногда чтение предмета, о котором вы знаете, может помочь отточить свои навыки.

Многие IDE поддерживают некоторые из простых рефакторингов.Eclipse и NetBeans имеют разные преимущества в своей поддержке рефакторинга, и в зависимости от вашей текущей среды вы можете найти один, который будет более полезным, чем другой.

То, что рефакторинг для вас не подойдет, это дать вам плано том, как добраться из точки A (ваш код спагетти) в точку B (ваш четко выделенный MVC).Вместо этого он просто сделает вас лучшим водителем на пути.К сожалению (или, к счастью, для всех разработчиков), все еще нужны хорошие мозги, чтобы выяснить, какие разделы кода намереваются делать, и более ли они размещены в Model, View или Controller.Остальное - это просто дразнить зависимости таким образом, чтобы вы могли в конечном итоге переместить код вверх или вниз в последовательности и в итоге вставить его в метод, который затем можно переместить в соответствующий класс.

Хорошоудачи.

0 голосов
/ 08 марта 2011

Я тоже не знаю ни одного инструмента.И, как другие здесь, вроде как, указывают, я думаю, что такие инструменты в конечном итоге сделают программистов избыточными.Мы не хотим этого, не так ли?: -D

Но проверка вручную, действительно ли вам удалось отделить код, не должна быть сложной.Просто убедитесь, что ваша «бизнес-часть» не импортирует свинг-пакеты:

  • найти в файлах «свинг»
  • переместить все эти файлы в один пакет
  • проверитьесть ли какая-либо "бизнес-логика" => вынуть ее
  • ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...