Как разработать JAVA-приложение? [закрытый]

23
задан Dushyanth 9 July 2010 в 15:27
поделиться

8 ответов

Трудно дать действительно общий совет, поскольку существует так много разных приложений Java в разных доменах. Тем не менее, одна настоятельно рекомендуемая книга - это Domain Driven Design Эрика Эванса. См. Также Википедию , где есть краткое введение.

Общий совет:

  • не пытайтесь спроектировать все заранее - сделайте достаточно хороший дизайн, который позволит вам начать кодирование, а затем проводить рефакторинг по мере углубления вашего понимания предметной области и реализации
  • попытайтесь разделить сложные проблемы на более мелкие части / шаги / модули, которые вы можете решать один за другим
  • попытайтесь мыслить категориями объектов с четко определенными обязанностями, которые (более или менее) моделируют проблемную область и взаимодействуют для решения проблемы / справиться с задачей
  • , чтобы хорошо разбираться в дизайне, в первую очередь требуется практика; не бойтесь ошибаться . Однако, когда вы это сделаете, проанализируйте их и извлеките из них максимум уроков
  • изучите шаблоны проектирования , но не переусердствуйте - используйте их только тогда, когда они действительно решают проблему и заставляют ваш код очиститель
14
ответ дан 29 November 2019 в 02:34
поделиться

Добро пожаловать на stack overflow. Если вы хорошо разбираетесь в Java, прочитайте Head First Design Patterns. и Head First Object-Oriented analysis and design - эээ, можно в обратном порядке :)

2
ответ дан 29 November 2019 в 02:34
поделиться

Не начинайте кодирование сразу, не имея дизайна. Но это не значит, что вы должны все спроектировать, прежде чем писать код. Потому что, судя по моему предыдущему опыту, у меня не могло быть дизайна, который не нуждался бы в исправлениях. Особенно, если вы новичок в языке программирования, ваш дизайн будет меняться в соответствии с особенностями языка, который вы используете, и доступными библиотеками. Мой совет - иметь общий дизайн, основанный на наиболее важных аспектах объектно-ориентированного дизайна, таких как наследование, полиморфизм, инкапсуляция и т. Д. Исходя из этого общего дизайна и потребностей, с которыми вы сталкиваетесь при программировании, соответствующим образом пересмотрите свой дизайн.

По мере того, как вы приобретаете опыт в языке, ваш первый общий дизайн будет гораздо более эффективным образом вписываться в вашу программу.

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

1
ответ дан 29 November 2019 в 02:34
поделиться

На мой взгляд, все сводится к следующему:

  1. легко понять
  2. легко поддерживать и развивать
  3. несколько разработчиков могут внести свой вклад в проект (в основном в параллельно)

Для достижения вышеуказанного существуют определенные рекомендации и принципы, которые предлагаются экспертами на основе опыта, которые

  1. Следуйте многоуровневой архитектуре
  2. Следуйте принципам SOLID внутри и между слои. Все шаблоны проектирования так или иначе помогают реализовать только эти принципы. SRP: принцип единой ответственности, OCP: принцип открытого закрытия, LSP: принцип замены Лискова, ISP: принцип разделения интерфейсов, DIP: принцип инверсии зависимостей
  3. Принципы DRY и KISS

Эти рекомендации и принципы не зависят от какой-либо парадигмы программирования или язык. Однако языки ООП помогают их легче реализовать.

5
ответ дан 29 November 2019 в 02:34
поделиться

Скорее всего, то, что вы будете делать, уже было сделано раньше - по крайней мере, что-то похожее. К счастью, в наши дни существует множество материалов с открытым исходным кодом. Так что если у вас нет никаких идей, вы можете скачать несколько приложений с открытым исходным кодом, которые делают то же самое, и изучить их. Это даст вам хорошее начало.

1
ответ дан 29 November 2019 в 02:34
поделиться

Существуют различные парадигмы (очень часто трехбуквенные сокращения):

  • DDD: Domain Driven Design
  • SDD: Serviice Driven Design
  • MDA: Model Driven Architecture (код и архитектура извлекается из модели UML)
  • TDD: Разработка через тестирование (проверочные тесты выполняются перед приложением)

С помощью этих ключевых слов вы найдете много информации в Интернете.

В J2EE я бы сказал, что SDD является наиболее используемым (сейчас он очень «нормализован», даже если я не уверен, что это лучшее решение): service (программный «интеллект»)> домен (bean объекты, используемые для сохранения)> DAO (постоянство).

Теперь DDD становится все более и более используемым: концепция перефокусирована на предметных объектах, которые берут на себя уровень «программного интеллекта».

3
ответ дан 29 November 2019 в 02:34
поделиться

Начните с изучения диаграмм классов UML, это поможет двигаться в правильном направлении, а затем посмотрите на паттерны проектирования Gang of Four. Это отличный первый шаг.

http://en.wikipedia.org/wiki/Class_diagram

http://en.wikipedia.org/wiki/Design_Patterns

И наконец, я бы полистал хороший открытый код, например, Spring Framework

http://www.springsource.org/

1
ответ дан 29 November 2019 в 02:34
поделиться

Я бы порекомендовал эмерджентный дизайн с TDD.

Я думаю, что в Java-дизайне нет ничего особенного: если вы уже знаете об объектном дизайне, вы готовы к работе!

1
ответ дан 29 November 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: