Рекомендации расположения проектирования программы Java?

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

Моя интуиция ведет меня к использованию некоторого программного обеспечения построения диаграммы, которое высказывает hierarchal мнение всех классов и методов. Я использовал OmniGraffle Pro и в то время как это, действительно кажется, работает несколько, я все еще испытываю затруднения, распланировав программу в целом. Как я должен приблизиться к этой проблеме? Чему программное обеспечение там доступно для помощи с этой проблемой? Какие-либо хорошие чтения там по этой проблеме?

Большое спасибо!

Править: О, да я использую Eclipse, и я кодирую главным образом в Java прямо сейчас.

9
задан 11 May 2010 в 20:47
поделиться

8 ответов

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

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

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

12
ответ дан 4 December 2019 в 12:17
поделиться

Рассмотрите возможность изучения объекта Философия ориентированного дизайна для методологии структурирования программ. UML или унифицированный язык моделирования обычно используется в качестве метода для структурирования объектно-ориентированных программ на таких языках, как Java и Python. Хорошие программы для таких как BoUML и ArgoUML . Кроме того, загляните на эту страницу о рефакторинге , хотя речь идет о реструктуризации кода, это также может помочь с исходной структурой. И, наконец, ознакомьтесь с этими ОО-дизайном принципами

1
ответ дан 4 December 2019 в 12:17
поделиться

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

Когда я закончу, я делаю снимок камерой и загружаю его на свой компьютер для длительного использования.

0
ответ дан 4 December 2019 в 12:17
поделиться

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

Мне нравится создавать различные пакеты, которые я планирую использовать, и помещать туда классы-заглушки. Вы даже можете вырезать методы, если хотите, и добавить комментарии Javadoc.

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

2
ответ дан 4 December 2019 в 12:17
поделиться

Большинство инженеров, которых я знаю, используют Visio - обычно он доступен как часть пакета вашей компании.

Есть также несколько бесплатных веб-приложений, которые выполняют моделирование за вас (объектное моделирование - это «ключевое слово» для того, о чем вы говорите)

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

0
ответ дан 4 December 2019 в 12:17
поделиться

Я бы добавил к комментариям Брайана, что, принимая гибкий подход, вы также применяете подход Test Driven Development (TDD) к написанию кода. По сути, вы пишете тесты для своего кода до того, как напишете какой-либо фактический производственный код. Это действительно заставляет вас замедлиться и хорошенько подумать о том, что вам нужно (и не нужно) для программирования, какие модели данных вам понадобятся и как они будут взаимодействовать. У TDD есть много преимуществ, но лучший дизайн для меня - это большой плюс. Вот соответствующий фрагмент из приведенной выше ссылки:

Разработка через тестирование предлагает больше, чем просто проверку правильности, но также может управлять дизайном программы. Сосредоточившись в первую очередь на тестовых примерах, нужно представить, как функциональность будет использоваться клиентами (в первом случае тестовыми примерами). Итак, программист занимается интерфейсом перед реализацией.

Если вы никогда не делали этого раньше, это может быть очень сложно, в первую очередь потому, что может быть трудно не начать кодирование прямо сейчас. Но проявите настойчивость, и вы никогда не вернетесь к написанию кода другим способом. Преимущества действительно того стоят. Удачи!

0
ответ дан 4 December 2019 в 12:17
поделиться

Существуют инструменты специально для такого рода задач (например, Rational Rose). К сожалению, хотя они световые годы лучше, чем Omnigraffle, большинство из них довольно дорогие. Есть несколько бесплатных инструментов, которые вы, возможно, захотите изучить, такие как ArgoUML и UMLet - хотя последний является плагином Eclipse, поэтому, вероятно, это не интересно, если вы не используете (или не хотите использовать) Eclipse.

2
ответ дан 4 December 2019 в 12:17
поделиться

Вам нужно знать о рецептах дизайна:

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

0
ответ дан 4 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

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