web-dev-qa-db-fra.com

Comment concevoir Java Application?

Quelles sont les directives générales et les meilleures pratiques à garder à l'esprit lors de la conception Java application [Applications de console simples sur les applications J2EE] ?.

Salut

J'ai récemment terminé Java Didacticiel de programmation à partir de Sun et pratiqué Core Java (j'ai une expérience de programmation précédente). Maintenant, je comprends les bases de l'héritage, de l'abstraction, du polymorphisme, Encapsulation

Maintenant j'écris Java code sans grande difficulté, mais je ne suis pas sûr de la conception d'applications. C'est mon problème principal: "Conception" de l'application. Dites si j'ai une tâche à créer une application À Java, que dois-je commencer? Comment penser? Toutes les directives formelles/informelles que je devrais suivre en développant des hiérarchies de classe? Je suis vraiment confus (classe abstraite ou interface ou sous-classe ..). Devrais-je commencer par modèle Tout, avant d'écrire du code?

Il serait très utile que les gens aiment que je dispose d'un ensemble de directives générales/meilleures pratiques, que nous pouvons suivre tout en commençant à développer une nouvelle Java Application.

S'il vous plaît me fournir des lignes directrices/pensées/livres/ressources/outils que je devrais lire ou utiliser

Merci d'avance Scott

23
Dushyanth

Il est difficile de donner des conseils vraiment généraux car il y a tellement de différences Java applications sur différents domaines. Cependant, un livre absolument recommandé est conception entraînée sur le domaine par Eric Evans. Voir aussi Wikipedia pour une introduction courte sur elle.

Conseil général:

  • N'essayez pas de concevoir tout avant - Faites un design raisonnablement bon qui vous permet de commencer à coder, puis refacteur que votre compréhension du domaine problématique et la mise en œuvre s'approfondir
  • essayez de diviser des problèmes difficiles en parties/étapes/modules plus petites que vous pouvez aborder une par une
  • essayez de penser en termes d'objets avec des responsabilités bien définies, qui (plus ou moins) modélisent le domaine du problème et coopèrent pour résoudre un problème/gérer une tâche
  • devenir bon au design nécessite une pratique, avant tout; N'ayez pas peur de faire des erreurs. Cependant, lorsque vous faites, analysez-les et apprenez-en autant que vous le pouvez
  • apprendre Modèles de conception, mais ne soyez pas trop zélé - utilisez-les uniquement quand ils résolvent vraiment un problème et faire votre propre nettoyeur de code
14
Péter Török

À mon avis, tout se résume à la rencontre ci-dessous

  1. facile à comprendre
  2. facile à maintenir et à évoluer
  3. plusieurs développeurs capables de contribuer au projet (principalement en parallèle)

Atteindre ce qui précède, il existe certaines directives et principes suggéré par des experts basés sur l'expérience qui sont

  1. Suivre architecture en couches
  2. Suivez les principes solides à l'intérieur et entre les couches. Tous les modèles de conception sont un moyen ou l'autre aide à atteindre ces principes uniquement. SRP: principe de responsabilité unique, OCP: principe fermé ouvert, LSP: principe de substitution de Liskov, ISP: principe de ségrégation d'interface, DIP: principe d'inversion de dépendance
  3. Sec et KISS Principes

Ces directives et principes sont indépendants de tout paradigme ou langue de programmation. Toutefois, OOP Langues aidez les outils plus faciles.

5
Aravind R. Yarram

Je vous conseille vraiment de jeter un coup d'œil à Principes de saisie , cela vous donne une bonne base de conception.

Il y a divers paradigmes (très souvent 3 lettres acronymes):

  • DDD: conception basée sur le domaine
  • SDD: Design motorisé du serviice
  • MDA: L'architecture pilotée (code et architecture est extraite du modèle UML)
  • TDD: développement axé sur les tests (les tests de validation sont mis en œuvre avant la demande)

Avec ces mots-clés, vous trouverez beaucoup d'informations sur le Web.

En J2ee, je dirais que le SDD est le plus utilisé (il est maintenant très "normalisé", même si je ne suis pas sûr que ce soit la meilleure solution): service (logiciel "intelligence")> domaine (objets de haricots utilisés pour persistance)> Dao (persistance).

Maintenant, DDD est de plus en plus utilisé: la conception est recentrée sur des objets de domaine, qui prennent la couche "Intelligence logicielle".

3
Benoit Courtine

Bienvenue dans le débordement de pile. Si vous êtes bon avec Java, lisez-la tête de première conception. et tête d'une première analyse orientée objet et de conception - ER, peut être dans l'ordre inverse :)

2
ring bearer

Commencez par regarder des diagrammes de classe UML qui obtiendrez la balle à rouler dans la bonne direction, puis jetez un coup d'œil à un gang de quatre motifs de conception. C'est une excellente première étape.

http://fr.wikipedia.org/wiki/class_diagramme

http://fr.wikipedia.org/wiki/design_patterns

Enfin, je verrais sur un bon code open source comme le cadre de printemps

http://www.springsource.org/

1
Ayubinator

Je recommanderais un design émergent avec TDD.

Je pense qu'il n'y a rien de spécifique à Java Design: Si vous connaissez déjà la conception de l'objet, vous êtes prêt à partir!

1

Ne commencez pas à coder immédiatement sans avoir de conception. Mais cela ne signifie pas que vous devez concevoir tout avant le codage. Parce que de mes expériences précédentes, je n'ai pas pu avoir de conception qui n'a pas besoin de corrections. Surtout si vous êtes nouveau dans une langue de programmation, votre conception changera en fonction des fonctionnalités de la langue que vous utilisez et des bibliothèques disponibles. Mon conseil est d'avoir une conception générale basée sur les aspects les plus importants de la conception orientée objet telle que l'héritage, le polymorphisme, l'encapsulation, etc. à partir de cette conception générale et des besoins que vous rencontrez lors de la programmation, révisez votre conception en conséquence.

Autant que vous êtes expérimenté dans la langue, votre première conception générale conviendra de manière beaucoup plus efficace pour votre programme.

Bien que la plupart des gens disent que la conception orientée d'un objet devrait pouvoir être écrite dans n'importe quel langage orienté objet, il n'est pas facile d'avoir une très bonne conception générique comme celle-là. Pour être plus réaliste, sans tenir compte de la langue utilisée pour la mise en œuvre d'une conception particulière n'est pas un bon chemin aussi loin que moi.

1
Mustafa Zengin

Les chances bien que vous ferez a déjà été faite avant - au moins quelque chose de similaire. Heureusement, il y a beaucoup de choses open-source de nos jours. Donc, si vous n'avez vraiment aucune idée, une chose que vous pouvez faire est de télécharger plusieurs applications open source qui font la même chose et les étudient. Cela devrait vous donner un bon départ.

1
JRL