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

JavaScript Discussion :

Optimisation de code


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur Hôtelier
    Inscrit en
    Janvier 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur Hôtelier
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2011
    Messages : 48
    Par défaut Optimisation de code
    Bonjour à tous.

    Je vais vous exposer ma demande le plus clairement possible. J'essais actuellement de faire une feuille de calcul de caisse (pour parfaire mes connaissances personnelles). Je suis parti un peu dans tous les sens pour mes débattre avec ce que j'ai pu voir sur des forums ou des sites de tutoriels. Je me suis tellement débattu que je me retrouver avec un code fonctionnel mais que j'aimerais optimiser afin de ne plus avoir tant de fichiers differents.

    J'ai donc :
    • calcul.php (formulaire de calcul)
    • Result.php (page imprimable du tout calculé)
    • calculs.js (qui effectue les calculs)
    • Verif.js (qui vérifie que la caisse est bonne)
    • nan.js (qui vérifie les inputs afin qu'il n'y ai que des chiffres compatible)


    Globalement à chaque perte de focus sur un des champs j'ai la fonction cal() qui calcul... Après je clique sur un bouton "vérifier" (#verification) pour lancer la vérification, qui charge également, avec les résultats un autre formulaire (caché) que j'envoie sur la page Result.php avec un bouton submit "imprimer"...

    Tout est très long et complètement brouillon. C'est pourquoi je viens vers vous aujourd'hui pour apprendre un peu plus et essayé de ranger, d'améliorer et d'optimiser. Par exemple est ce que tout les DOCS.JS peuvent être transformés un un seul qui travaillera pour chaque fonction ? puis-je me séparer d'un des deux boutons en ne faisant partir les fonctions que via le bouton imprimer ?

    Je vous laisse les fichiers listés si vous souhaitez visualiser le "bordel" j'ai pas contre évité le css donc pas de panic c'est juste moche

    Merci d'avance à tous ceux qui prendrons un peu de temps pour m'expliquer et me montrer deux ou trois astuces.

    caisse.rar <-- Pièce jointe modifiée

    Cordialement, Nicolas

  2. #2
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Billets dans le blog
    55
    Par défaut
    ta pièce jointe ne fonctionne pas
    Développeur Java
    Site Web

  3. #3
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 099
    Par défaut
    Bonjour Nicolas,

    je vais jeter un coup d'œil. Tu auras mon commentaire dans un an ou deux
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Membre averti
    Homme Profil pro
    Directeur Hôtelier
    Inscrit en
    Janvier 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur Hôtelier
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2011
    Messages : 48
    Par défaut
    Bonjour et merci de t'y pencher déjà ! 👍
    un an ou deux !? C'est si mauvais que ça !? 😧
    J'espère quand même que j'ai fais deux ou trois trucs bien dedans ... en même temps j'essaie d'apprendre donc deux ou trois tuto pourraient bien m'aider. Je vais essayer de lire en même temps.

    Bon dimanche, Nicolas

  5. #5
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 099
    Par défaut
    Après une première lecture rapide, j'ai quelques remarques.

    D'abord, il manquait la classe JFactory, mais j'ai pu me débrouiller sans. J'ai quand même fait une recherche et j'ai vu que c'était lié à Joomla. Si tu veux mon avis (très) personnel : si tu as vraiment l'intention d'apprendre à coder proprement, que ce soit en PHP ou en JS, fuis les CMS comme la peste. Ils ne t'apporteront que des ennuis.

    Ensuite, les styles. Comme tu l'as fait remarquer, il n'y en a pas. Le problème, c'est qu'il y en a quand même :

    – Les <br> qui se suivent traduisent une volonté de créer une marge, un espacement, bref : c'est de la mise en page. De manière générale, jamais plus d'un <br> à la fois dans le code HTML. La mise en page c'est le domaine de CSS, donc fais les espacements dont tu as besoin avec du code CSS.

    – Même remarque pour les &nbsp;. Tiens au passage, culture gé : &nbsp; c'est le no-break space, en français l'espace insécable (et quand on parle d'espace en typographie, le mot est féminin : on dit une espace insécable). C'est une espace qu'on met aux endroits où on ne veut pas qu'il y ait un saut de ligne. Son emploi en HTML est largement abusif en général

    – Tu peux éviter les problèmes de guillemets les plus simples si tu utilises la vraie apostrophe. Tu peux la copier depuis un traitement de texte (ils font la substitution automatiquement) ou bien aller sur le site que je viens de lier et apprendre à la taper sur ton clavier pour aller plus vite. Ou alors tu peux aussi utiliser l'entité &rsquo;.
    Plus besoin de blackslash dans 'L\'Abbé de L\'Isle' si tu peux écrire 'L’Abbé de L’Isle' ou 'L&rsquo;Abbé de L&rsquo;Isle'.

    – Les infobulles : il y a moyen d'en faire sans JS… En mettant simplement un attribut title ! On a le droit de le mettre quasiment partout. Les utilisateurs ont l'habitude de voir apparaître une infobulle sur les éléments qui sont soulignés en pointillés et sur lesquels le curseur prend la forme d'un curseur d'aide, deux choses qui sont facilement réalisables en CSS. Du coup je te conseille de créer une règle CSS :
    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    *[title] {
      border-bottom: dotted thin black;
      cursor: help;
    }
    Un peu comme la balise <abbr>.
    Ainsi tu pourras remplacer par exemple :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <span class="type" onMouseOver="infobulle(this, 'Total des encaissements en chèques vacances');">Total ANCV :</span>
    Par :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <span class="type" title="Total des encaissements en chèques vacances">Total ANCV :</span>

    – La balise <q> ! Il n'y aura jamais assez de <q> sur Internet. désolé…
    Pour indiquer une citation courte ou une expression. Je pense que tu peux l'utiliser à cet endroit :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    &ndash;&nbsp;Entrez les informations du journal de caisse demandée et
      remplissez votre feuille de caisse. Lorsque vous avez terminé vous
      pouvez la <q><strong>vérifier</strong></q> et
      l&rsquo;<q><strong>imprimer</strong></q>.
    Tu l'auras compris, elle remplace les guillemets. L'intérêt est que tu peux changer le style des guillemets à volonté en les spécifiant dans le CSS :
    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    q {
      quotes: '\00AB\00A0' '\00A0\00BB';
    }
    On a une déclaration en deux parties, la partie « guillemet gauche » et la parte « guillemet droit ». 00AB est l'unicode pour «, 00BB est l'unicode pour ». Quant à 00A0, il s'agit de notre amie l'espace insécable

    Tu peux ne pas aimer la balise <q> car avec elle, les guillemets ne sont pas séléctionnables. Ça peut être vu comme un avantage ou un défaut, selon le point de vue. En tout cas ils apparaissent bien à l'impression (du moins dans l'aperçu).

    – Dernière remarque : tes doctypes sont invalides, il y a des &nbsp; dedans. En parlant de ça, tu peux passer ton code HTML à la moulinette du validateur, il te dira plein de trucs, souvent utiles, dont tu as le droit de tenir compte ou pas.

    – Allez, deuxième dernière remarque (après j'arrête, promis) : les attributs align et les attributs style. Tout ça c'est de la mise en page donc il faut essayer d'en avoir le moins possible dans le code HTML. Cela dit, il y a certains aspects des tableaux qui sont difficiles à reproduire avec CSS, du coup je reconnais que certains usages de align (et surtout valign en fait) se justifient.

    Voilà pour les styles, et un petit peu de typographie aussi. Je passe au code PHP et je te dis ce que j'en pense
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  6. #6
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 099
    Par défaut
    Dans ton code PHP, tu as beaucoup de redondance, en particuler avec les noms de variable qui se terminent par un chiffre comme $nb1, $nb2, etc. C'est un cas où il faudrait utiliser un tableau.

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // depuis PHP 5.4, on déclare les tableaux comme en JS
    $nb = [];
     
    // si tu n'as pas accès à une version récente de PHP
    $nb = array();
    Ensuite, tu peux factoriser ton code (c'est-à-dire éliminer les répétitions) dans un boucle for.
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for ($i = 1; $i <= 15; $i++) {
      $nb[$i] = empty($_POST["nombre{$i}t"]) ? 0 : $_POST["nombre{$i}t"];
    }
    Attention, j'ai fait commencer la boucle à 1 et non pas à 0 comme on fait d'habitude, pour que les index correspondent aux noms de tes variables.
    Par la suite, tu accèdes à tes variables par la notation index : <?php echo $nb[9]; ?> au lieu de <?php echo $nb9; ?>
    La même chose avec $tt.

    Autres trucs en vrac :

    – La fonction date accepte des caractères échappés, tu peux donc faire par exemple : echo date('H \h i'); pour afficher l'heure sous la forme 21 h 54 (le h du milieu n'est pas interprété). D'ailleurs, au début de ton code, tu as une déclaration superflue de la variable $heure.

    – Tu ne vérifies pas l'existence de tous les paramètres POST, ça génère des tas d'alertes. Si tu as désactivé les alertes, c'est mal ! Un bon code PHP ne produit aucun message ni d'alerte ni d'erreur. Cela ne veut pas dire qu'il ne fait jamais d'erreur ; mais les erreurs qui s'y produisent sont traitées au bon moment et ne remontent pas jusqu'à l'utilisateur. Et interdit de tricher avec l'opérateur @ !
    En l'occurence, tu testes déjà une partie de tes paramètres avec empty. C'est un bon début, et je te conseille de faire subir le même traitement aux autres paramètres.

    – Attention toutefois avec empty : un 0 sera considéré de la même manière qu'un paramètre absent. Si tu veux prendre en compte les 0, il vaut mieux utiliser isset.

    – Pour revenir aux histoires d'alertes, tu peux t'assurer de les voir toutes, quelle que soit la config du serveur, en plaçant ceci ligne au tout début de ton script :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    error_reporting(-1);

    – Un point sur la sécurité : tu le sais sans doute, les données provenant du client sont susceptibles de contenir du code malveillant. Comme les valeurs que tu attends sont toutes des nombres (si je me trompe pas), tu peux te protéger facilement en convertissant explicitement toutes tes valeurs en type numérique, avec intval.

    Voici un début de code qui valide les paramètres, ne génère pas d'alerte et gère correctement les 0 :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $nb = [];
    $tt = [];
    for ($i = 1; $i <= 15; $i++) {
      $nb[$i] = isset($_POST["nombre{$i}t"]) ?
                              intval($_POST["nombre{$i}t"]) : 0;
      $tt[$i] = isset($_POST["tot{$i}t"]) ?
                              intval($_POST["tot{$i}t"]) : 0;
    }

    – Je reviens un petit coup sur le HTML : le validateur signale des attributs id qui ne contiennent que des chiffres. C'est déconseillé, mais la plupart du temps ça marche quand même. À toi de voir. Moi je pense que ça ne bouleversera pas ton application si tu les enlèves purement et simplement.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

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

Discussions similaires

  1. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41
  2. Optimiser mon code ASP/HTML
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 30/05/2005, 10h29
  3. optimiser le code
    Par bibi2607 dans le forum ASP
    Réponses: 3
    Dernier message: 03/02/2005, 14h30
  4. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54
  5. optimisation du code et var globales
    Par tigrou2405 dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2004, 10h59

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