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

Langage Java Discussion :

Règles d'optimisation du code source


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 29
    Points
    29
    Par défaut Règles d'optimisation du code source
    Bonjour,

    Le message est un peu long en fonction des éléments de contexte.

    Je développe depuis plusieurs années un logiciel qui comporte plusieurs milliers de lignes. Suite à un récent incident à répétition j'ai mis en cause ma manière de coder mon application (ce qui n'était pas le cas). Celle-ci gère une base de données (h2database) et lorsque j'ai installé le plugin SonarLint pour repérer les optimisations à faire je me suis rendu compte que beaucoup de signalements concernaient la duplication de variables statiques (genre intitulé d'un champ de la BDD). J'ai bien compris qu'il me faudrait regrouper ces variables statiques quelque part. Mais je m'interroge sur le fichier où mettre ça: fichier unique, ou déclarations dans les fichiers concernés?

    Un exemple concret: l'une des entités de la BDD concerne la description de Lieux. Cette description est utilisée dans plusieurs fichiers: Editeur.java (pour modifier/créer), Panel.java (pour afficher en mode tableau), Export.java (pour exporter les informations dans différents formats), etc... Donc où mettre les variables statiques? Dans chacun des fichiers? Dans un fichier unique commun?

    À savoir que ma BDD comporte pas moins de 59 éléments distincts.

    J'espère avoir été assez clair.

    PS: petite info complémentaire, le logiciel comporte 1929 fichiers, dont 1874 fichiers Java pour un total de 214982 lignes de code.

  2. #2
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par favdb Voir le message
    Un exemple concret: l'une des entités de la BDD concerne la description de Lieux. Cette description est utilisée dans plusieurs fichiers: Editeur.java (pour modifier/créer), Panel.java (pour afficher en mode tableau), Export.java (pour exporter les informations dans différents formats), etc... Donc où mettre les variables statiques? Dans chacun des fichiers? Dans un fichier unique commun?
    Bonjour,

    La réponse me semble être dans la question... Est-ce qu'il existe une classe pour les Lieux ? Si oui, c'est peut-être l'endroit où déclarer les constantes (ou variables ?) concernant ces entités, indépendamment de leur utilisation. Ou une classe de description spécifique, mais en fonction de leur modélisation, pas de leur usage (qui peut varier, comme indiqué ci dessus (dans des classes plutôt que des fichiers .java, d'ailleurs)).

    Il vaut mieux penser modélisation objet, pas usage des données. ça me semble plus clair et plus maintenable.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Merci pour ta réponse qui me conforte dans mes conclusions: il n'y a pas de règle précise. En revanche je retiens la suggestion de mettre les données statiques dans la classe de description des objets. Ça me paraît logique, c'est pas forcément ce que j'ai mis en oeuvre jusqu'à présent. Je vais donc entreprendre la réécriture de ces quelques 40 objets.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 627
    Points : 10 548
    Points
    10 548
    Par défaut
    Citation Envoyé par favdb Voir le message
    Merci pour ta réponse qui me conforte dans mes conclusions: il n'y a pas de règle précise.
    Enfin je pense que si on peut dire que le problème c'est de déterminer qui est/ sont le(s) propriétaire(s) de la donnée et que va en faire la variable qui va l'utiliser (lecture, écriture, lecture et écriture)

    Lorsque tu fais 1 variable globale/ statique, toutes les autres variables sont propriétaires et toutes peuvent la lire/ modifier.
    1 technique (surtout avec 1 IHM) est de faire 1 god object (<- lien wikipedia en français) (en gros de regrouper toutes les variables/ fonctions statiques/ globales dans 1 seul objet)

    Mais comme le dit @Cincinnatus, le mieux est
    • de définir le propriétaire - s'il en a plusieurs c'est + compliqué
    • de déterminer si ce propriétaire a la possibilité de créer/ détruire ou pas - association vs agrégation en UML
    • d'exposer l'interface nécessaire pour lire/ modifier - souvent via les accesseurs et les mutateurs


    L'injection de dépendance est aussi très utilisée pour transmettre des données entres 2 classes.

    En gros, cela s'appelle de la conception

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/03/2016, 00h45
  2. Optimiser WebClient qui récupère le code source
    Par CLeBeR dans le forum VB.NET
    Réponses: 3
    Dernier message: 11/09/2013, 22h01
  3. Livres pour l'optimisation de code source
    Par Umlist dans le forum Livres
    Réponses: 3
    Dernier message: 28/06/2012, 17h41
  4. Optimisation code source
    Par nopnop77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 17/06/2009, 11h59
  5. [VB6] Code source pour modifier MsgBox
    Par khany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 25/02/2003, 16h13

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