IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Revue de code et quelques conseils pour m'améliorer !


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    passioné
    Inscrit en
    Avril 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : passioné

    Informations forums :
    Inscription : Avril 2018
    Messages : 7
    Par défaut Revue de code et quelques conseils pour m'améliorer !
    Bonjour à tous,

    J'ai commencé à apprendre Java avec le livre : "Le livre de java premier langage". Il ne me reste plus que les parties sur les bibliothèques graphiques (swing et AWT) ainsi que Android à voir...

    Mais avant j'aimerai recevoir quelques conseils sur mon code, sa qualité, des pistes d'améliorations...

    Mon code vous provoquera mal de tête et peut être même vomissement, mais vos conseils me permettront certainement de m'améliorer !

    Donc si vous avez 5 min pour me faire une "revue de code" je vous en remercie d'avance !



    Petite explication du projet :

    C'est un système de gestion de compte, on peut ajouter des comptes et leurs créer des "lignes comptables".

    Un nombre "infini" de compte peut être créé, chaque compte peut sauvegarder 10 lignes comptables.

    Les compte peuvent être supprimés et affichés avec leurs lignes comptables.



    Voici mon code pour le projet proposé dans le livre : https://github.com/magrets/ProjetLivreV2.git


    Les points dont je suis sur d'avoir besoin de conseil :

    - problème avec mes Scanner :

    J'ai créé comme dans le livre un Scanner dans chaque fonction ou j'en utilise un. Je sais pas comment faire pour tous les fermer...

    - L'utilisation de git :

    Je suis en train d'apprendre, quand faites vous un commit (nouvelle fonction, nouvelle class...) ?




    Si vous avez également quelques conseils concernant des choses à voir par la suite (pattern, structure de code, bibliothèque etc).

    En vous remerciant,

    Magrets.

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 549
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 549
    Par défaut
    salut dans le fichier CompteEpargne.java le do..while m'inquiète un peu.
    Vaut mieux éviter..

    Ensuite on fait un commit lorsqu'on est certain que le code source n'est pas à modifier en général.
    Il faut faire deux branches, une branche de code "stabilisé" et une autre branche de code qui est sujet à modification.

  3. #3
    Membre du Club
    Homme Profil pro
    passioné
    Inscrit en
    Avril 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : passioné

    Informations forums :
    Inscription : Avril 2018
    Messages : 7
    Par défaut
    Bonjour, merci d'avoir prit le temps de me répondre.

    Je ne comprend pas pourquoi ma boucle pose problème :/ Est ce que vous pourriez m'en dire un peu plus ?

    Concernant le versionnage je prend note et je vais m'y mettre !

    Encore merci,
    Magrets.

  4. #4
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 549
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 549
    Par défaut
    bonsoir c'est pas que ça pose problème c'est que la boucle risque de tourner indéfiniment.
    Il faut donc traiter une condition de sortie

  5. #5
    Membre du Club
    Homme Profil pro
    passioné
    Inscrit en
    Avril 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : passioné

    Informations forums :
    Inscription : Avril 2018
    Messages : 7
    Par défaut
    Mais ma boucle a une condition de sortie, je suis désolé je ne comprends pas bien le problème... :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private double controlTaux(){
            double tmpdouble;
     
            do{
                System.out.println("Quel est le taux du compte épargne :");
                tmpdouble = Double.parseDouble(Sc.myScanner.next());
            }while(tmpdouble < 0.0);
     
            return tmpdouble;
    }
    Merci pour la modifications sur mon message

  6. #6
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    En fait lorsque Mat.M parle de condition de sortie de la boucle do ... while, il veux te dire que telle que la condition de ta boucle est conçue, il n'y a pas de condition de sortie à proprement parlé.

    Une condition de sortie explicite serait le code suivant :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    private double controlTaux(){
            double tmpdouble;
            boolean sortie = Boolean.TRUE;  
            int compteur = 0;        
     
            do{
                System.out.println("Quel est le taux du compte épargne :");
                tmpdouble = Double.parseDouble(Sc.myScanner.next());
                if (tmpdouble < 0.0) {
                    sortie = Boolean.FALSE;
                }
                compteur++;
            }while(sortie && compteur < 2);
     
            return tmpdouble;
    }

    Il faut créer une variable compteur, qui comme son nom l'indique va incrémenter un compteur du nombre de saisie de taux de compte épargne.
    Si tu ne fais pas cela la boucle va continuer sans fin à demander la saisie des taux d'épargne au client. Tu souhaites un taux d'épargne et pas 2, 3, 4, ... n taux d'épargne.

    Rony Rauzduel

  7. #7
    Membre du Club
    Homme Profil pro
    passioné
    Inscrit en
    Avril 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : passioné

    Informations forums :
    Inscription : Avril 2018
    Messages : 7
    Par défaut
    Merci de la réponse !

    La condition sert juste à vérifier que le taux d'épargne est supérieur à 0 car il ne peut être négatif, mais je vais en effet rajouter un compteur au cas ou le client serait un peu bête le taux sera a 0 au bout de 3 essaies !

    Merci à vous pour vos conseils !

  8. #8
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    La condition sert juste à vérifier que le taux d'épargne est supérieur à 0 car il ne peut être négatif
    Professionnellement pour ce type de "problème", il faut créer une classe Exception qui gère ce cas de figure. Je te laisse jeter un coup d'oeil sur la gestion des exceptions en Java.

    Rony Rauzduel

  9. #9
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 489
    Billets dans le blog
    5
    Par défaut
    Moi, ce qui me gène, c'est que je n'ai pas l'impression qu'il y ait différentiation entre les concept.

    J'avoue aussi ne pas avoir, à la lecture du code, compris le métier.

    Pour commencer, chaque classe doit avoir une responsabilité (SOLID https://fr.wikipedia.org/wiki/SOLID_(informatique) ).

    En partant de ce principe, on peut séparer les classes qui font des choses (lire un compte, inscrire un compte, calcul,..) et ceux qui décrivent le concept (compte, ...).

    C'est comme ça que l'on arrive au modèle DAO/Service/controleur...
    https://fr.wikipedia.org/wiki/Objet_...x_donn%C3%A9es

    Ce que je ferais:

    1) Un diagramme UML pour les classes métier, celle qui décrivent les concepts utilisés (compte)
    2) Des classes qui sauvegardes, inscrivent...
    Là, tu sérialize (si j'ai bien lu) mais à long terme, tu pourrais changer l'enregistrement (XML, BDD pour ce qui est la vraie vie).
    C'est d'ailleurs le Design Pattern Stratégie.
    https://fr.wikipedia.org/wiki/Strat%...de_conception)

  10. #10
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 549
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 549
    Par défaut
    Merci Rony pour l'intervention faut dire que j'ai répondu rapidement

  11. #11
    Membre du Club
    Homme Profil pro
    passioné
    Inscrit en
    Avril 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : passioné

    Informations forums :
    Inscription : Avril 2018
    Messages : 7
    Par défaut
    Merci à tous pour vos réponses !

    Si j'ai bien compris la prochaine étape pour moi c'est de découvrir les design pattern ?

    Par contre concernant les exceptions, j'ai bien lu le chapitre présent dans mon livre mais aucune partie ne parle d'une class pour les gérer... Je vais donc me renseigner la dessus !

    Encore merci à vous !

  12. #12
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    Par contre concernant les exceptions, j'ai bien lu le chapitre présent dans mon livre mais aucune partie ne parle d'une class pour les gérer... Je vais donc me renseigner la dessus !
    C'est à toi de créer une classe pour gérer les exceptions de ton application bancaire.

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class CompteBancaireException extends Exception {
     
        public CompteBancaireException(String message) {
            super(message);
        }
     
        @Override
        public String getMessage() {
            return "Cause Erreur : " + super.getMessage(); 
        }
    }

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // Le taux d'épargne est supérieur à 0 car il ne peut être négatif
    // si le taux bancaire est négatif tu lèves cette exception dans la classe où le taux bancaire est demandé à l'utilisateur
    throw new CompteBancaireException("Le taux bancaire ne peut pas être négatif !");

    Rony Rauzduel

  13. #13
    Membre du Club
    Homme Profil pro
    passioné
    Inscrit en
    Avril 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : passioné

    Informations forums :
    Inscription : Avril 2018
    Messages : 7
    Par défaut
    Ok merci à tous pour vos réponses ! Je passe le sujet en résolu et continu de m'entrainer !

    Je trouve qu'adopter de bonne pratique est assez dur en autodidacte car personne n'est la pour redresser le tir ou autre... :/


    Encore un grand merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quelques conseils pour un futur élève
    Par LilBoOdy dans le forum Etudes
    Réponses: 5
    Dernier message: 01/03/2007, 12h27
  2. Réponses: 8
    Dernier message: 26/11/2006, 15h16
  3. Quelques conseils pour la reprise de mon jeu ?
    Par Franck.H dans le forum SDL
    Réponses: 16
    Dernier message: 23/09/2006, 13h55
  4. Quelques conseils pour créer une application 3D
    Par mister3957 dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 13/03/2006, 23h45
  5. Besoin de quelques conseils pour un script java
    Par poussin544 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/03/2006, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo