Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gérer "L'architecture" d'un projet : conseils

9 août 2018 à 15:27:48

Bonjour à tous :)

Voilà mon souci : je code depuis à peu près un an en Java, et j'avance lentement mais sûrement, en commençant par le procédural et en m'éloignant au fur et à mesure vers l'OO. Je n'ai de souci particulier avec aucun des aspects que j'ai vu jusqu'à présent, je finis toujours par me "débloquer" avec des exos ou des vidéos... Mais j'ai un souci avec les programmes de plus grande ampleur!

En effet, jusqu'à il y a peu, on m'a surtout demandé d'écrire cette fonction puis celle-ci, puis cette classe... Et subitement, on me demande de créer "un programme capable de". Malgré le fait que j'ai les connaissances nécessaires à ma disposition, je sèche : comment choisir mes classes? Les nommer? Leur attribuer les bonnes responsabilités? Les réunir en package?

Pour que ce soit un peu plus clair, je peux donner mon exemple du moment : je dois réaliser un programme dans lequel on peut ajouter des vins en introduisant leurs différentes caractéristiques dans différents champs,notamment les différentes associations avec la nourriture qui s'accorde le mieux avec ces vins. On doit ensuite pouvoir trier les vins par ordre alphabétique ou selon les accords. On me donne le main et le CSS et c'est tout, je dois construire classes, package etc.

Séparément, je sais faire les tâches (vérifier que les champs ne sont pas vides, trier une lister, etc), mais je n'ai aucune idée de comment faire dans ce cas... Par où commencer? Comment greffer mon code au stub qu'on m'a fourni?

J'espère que mon problème est clair... Je ne sais pas non plus si j'utilise les bons termes (en disant architecture par ex), donc si vous avez des noms plus spécifiques pour ce souci je veux bien le connaitre pour le Googler aussi :)

A bientôt :)

  • Partager sur Facebook
  • Partager sur Twitter
9 août 2018 à 16:29:53

Pour l'architecture d'un projet, je te conseille la page wikipédia, qui, pour une fois, n'est pas trop dégueulasse : https://fr.wikipedia.org/wiki/Architecte_informatique

Après, pour l'organisation de ton projet, ça va dépendre de deux choses :

- les technologies utilisées

- le design pattern utilisé

Après, j'aime bien avant un projet (surtout personnel) de commencer par un schéma relationnel (pour la base de donnée) qui sera presque un reflet en schéma UML. Ça me permet d'avoir l'esprit plus clair, déterminer le plus utile et surtout de voir les éléments essentiels et les superflus.

Pour revenir dans ton exemple de projet, si tu pars sur du MVC, tu auras à peu près cette architecture-là

Model

  |- Vins

     - Vin.java

     - Couleur.enum

     - Cepage.enum

     - etc

   |- Vignobles

      - Vignoble.java

      - Region.enum

      - Label.enum

      - etc

   |- etc

Controller

   |- ControllerVin

   |- ControllerVignoble

   |- ControllerMariage

   |- etc

View

   |- ViewVin

   |- ViewVignoble

   |- etc

   Main.java

Ensuite, mais ça n'engage que moi, pour les noms significatifs, il ne faut pas lésigner à se renseigner sur le métier (quitte à mettre un commentaire à côté pour expliquer précisément ce que c'est), et même à mettre parfois des mots longs pour s'y retrouver au premier coup d'oeil. Pour donner un exemple, autant pgdc est assez connu (plus grand dénominateur commun), personnellement, je préfère avoir plus une fonction qui s'appelle plusGrandDenominateurCommun. Il suffit qu'un jour, je ne suis pas réveillée ou malade pour ne plus savoir ce qu'est pgdc (et je ne déconne pas, ça m'est arrivée avec mon numéro de cb quand j'étais malade... Genre, le truc que j'utilise tout le temps XD)

  • Partager sur Facebook
  • Partager sur Twitter