2009-03-24 6 views
1

Suivez-vous les directives de conception dans l'emballage java?Suivez-vous des directives (java) dans l'emballage?

est un bon emballage fait partie de la compétence de conception? Y a-t-il un document à ce sujet? Edit: Comment les paquets doivent dépendre l'un de l'autre ?, les paquets cycliques sont-ils inévitables ?, pas sur les fichiers jar ou war.

+1

que voulez-vous dire par "emballage?" Voulez-vous dire organiser votre code dans des paquets, ou construire des pots/etc.? –

+0

D'accord avec Andy - est-ce à propos de la disposition du code source ou de la mise en page de ce que vous expédiez en tant qu'application? – TofuBeer

Répondre

1

L'emballage est normalement environ la gestion des versions et les directives générales sont:

  • cohérence: lorsque vous publiez dans l'intégration, pré-production ou de l'environnement de production plusieurs livraisons, vous voulez les organiser (ou "empaqueté") exactement de la même manière

  • petit nombre de fichiers: lorsque vous devez copier un ensemble de fichiers d'un environnement à une autre, vous voulez copier autant que possible, si leur nombre est raisonnable (10-20 max par composant à livrer), vous pouvez simplement les copier (même si ces fichiers sont importants en taille)

Alors vous souhaitez définir une structure commune pour chaque livraison comme:

aDelivery/ 
    lib // all jar, ear, war, ... 
    bin // all scripts used to launch your application: sh, bat, ant files, ... 
    config // all properties files, config files 
    src // all sources zipped into jars 
    docs // javadoc zipped 
    ... 

de plus, toutes les structures de répertoires communs doivent être stockés dans un référentiel commun (un VCS, ou une prise en pension de Maven, ou ...), afin pour être interrogé, sans avoir à les reconstruire chaque fois que vous en avez besoin (vous n'en avez pas besoin si vous avez seulement un ou deux composants de livraison, bu t quand vous avez 40 à 60 d'entre eux ... une reconstruction complète est hors de question).

0

Le problème avec l'emballage en Java est qu'il a très peu de rapport avec ce que vous voulez faire. Par exemple, j'aime suivre la convention Eclipse d'avoir des paquets marqués en interne, mais je ne peux pas définir leurs classes avec un niveau de protection "paquet".

2

Mon approche que j'essaie de suivre ressemble normalement comme ceci:

  1. avoir des paquets de taille raisonnable. Moins de 3 classes est étrange. Moins de 10 c'est bien. Plus de 30 n'est pas acceptable. Je ne suis normalement pas très strict à ce sujet.
  2. Ne pas avoir de cycles de dépendance entre les packages. Celui-ci est difficile car de nombreux développeurs ont du mal à trouver un moyen de garder le cycle des dépendances libre. MAIS ce faisant, taquine beaucoup de structure cachée dans le code. Il devient plus facile de penser à la structure du code et plus facile de l'évoluer.
  3. Définissez la couche et les modules et la façon dont ils sont représentés dans le code. Souvent, je me retrouve avec quelque chose comme <domain>.<application>.<module>.<layer>.<arbitrary substructure as needed> comme modèle pour les noms de paquets
  4. Aucun cycle entre les couches; pas de cycles entre les modules.

Afin d'éviter les cycles, il faut effectuer des vérifications. Beaucoup d'outils le font (JDepend, Sonar ...).Malheureusement, ils n'aident pas beaucoup à trouver des moyens de réparer les cycles. C'est pourquoi j'ai commencé à travailler sur Degraph qui devrait aider avec cela en visualisant les dépendances entre les classes, les paquets, les modules et les calques.

Questions connexes