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

 Delphi Discussion :

Critique d'un programme


Sujet :

Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Critique d'un programme
    Pour débuter (ou re débuter plutôt) autant faire un programme qui me serve et de préférence assez accessible en programmation. Je suis conscient que le programme est plein de bêtises mais j'ai tout fait pour le "border" des conn...de l'utilisateur. ça fait 2 semaines que je m'éclate avec ça, c'est passionnant.
    Je propose que vous critiquiez ce code (selon votre temps disponible) voir ce qui peut être plus efficace par exemple, car je trouve ça hyper pédagogique.

    il s'agit d'une calculatrice pavé numérique, moins belle qu'une à bouton, mais à mon avis beaucoup plus ergonomique. exercice idéale pour le contrôle des saisies. en arrière plan, une dizaine de label m'ont servi de débogueur, ils seront enlevé à la finalisation.
    vous le trouverez ici : www.3architech.com/downloads/DirectSource.rar

    j'attend de nombreuses critiques et même des coups de pied au c...

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    J'ai juste regardé vite fait le fonctionnement de la calculatrice et il y a un petit bug

    Exemple :
    (premier calcul) donc on continue en appuyant directement sur le moins (on veut continuer le calcule avec le résultat précédent) -8 et la il me marque ceci:
    Heu, le calcul est bon (- par - fait +) mais j'avais demandé une soustraction ...

    Voilà la seule erreur que j'ai constaté
    Sinon, c'est pas mal ...

    A+

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    tres juste, j'avais pas vu ce cas.
    le probleme viens que si l'on attaque un nouveau calcul avec sauvegarde du precedent, je met automatiquement l'operateur, et que le traitement continu. et comme le '-' est une touche valide pour le nombre, il l'écrit plus loin.
    il faut donc que j'invalide la touche à cette endroit. rajouter sous la ligne 511:

    if Rsaved and (key in operateur) then keypressed:=#0;// invalide l'operateur car déjà traité

    merci pour le bug,
    mais quel abus de if répetitif lol.
    j'ai corrigé sur le lien et j'ai mieux documenté l'ensemble.

  4. #4
    Membre habitué Avatar de stfanny31
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Points : 163
    Points
    163
    Par défaut
    salut je vien de tésté votre programme
    et j'ai remarqué plusieur bug
    1-quant j'apuis sur {C}le text s'efface Ok mais le resultat s'efface pas
    2-quant je termine une opération 1 example :
    si je ve ajouté une autre opération le contenu s'éfface et je garde que 4
    mais je pence que c'est mieux que l'utilisateur puisse voir toute ses opération
    3-quant j'ouvre un nouveau projet je fait le code suivant :
    je pence que cette opération dois etre interdite

    4-j'ai pas compri un truc ?
    quant je clique sur skin/texte:des que je change la police de mon écritur la Tform change de Taille ca fait peur

    j'espér que mes remarque serons constructrice et que cela vous possra a etre plus rigoureu
    merci bcp

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Salut stefanny et merci de m'aider.

    je vais repondre rigoureusement à la suite de tes questions énumérées.

    1/ quand on click sur C le résultat ne s'efface pas, en fait, c'est la case d'info
    en temps réel qui n'est pas mis à jour, et ça prête à confusion, yes, à corriger.

    2/ le fait de ne garder que le résultat en tapant un operateur aprés la fin
    du calcul est une habitude courante des calculatrices de base.sinon on encombre la note.mais conscient de cet inconvénient, c'est pour cela que j'ai fait un "multinote" via le combobox, pour retrouver ses petits .mais aussi l'edit du résultat en temps réel (du point 1). ça c'est un choix ergonomique et pas un bug.

    3/ là franchement je ne comprend pas, j'ai essayé d'obtenir "rien" + 7= 7, je n'y arrive pas
    par contre j'obtiens: 7=7 sans probleme, mais bon ça reste valide quand même.

    4/quand tu changes le texte (en fait c'est fait pour ceux qui voient mal) je suppose que
    l'on agrandi le texte et j'ajuste automatiquement la taille de la form avant que l'utilisateur le fasse lui même sinon les chiffres se masquent ou passent sur 2 lignes.
    le but de ce programme étant en réalité un objectif ergonomique. "éviter la souris"!!

    merci pour tes remarques, surtout pour le point 1, ya une ligne de code à écrire.

    (remarque tu as à dispo le code source commenté, tu pourras
    te le rendre plus pratique pour toi si tu veux)

  6. #6
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Peux-tu me dire si le combobox de calcul fonctionne, car rien ne change ...
    Je m'y prends peut être mal

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    le combo sert à enregistrer plusieurs notes en mémoire que l'on peut rappeler et modifier à tout instant.
    selectionne le champ et change "calcul1" en "surface" par exemple.
    tout ce que contient le memo sera en mémoire sous ce nom.
    clicdroit sur ce même champ permet d'ajouter un nouvel item
    que tu pourras renommer "volume" par exemple. et y écrire des calculs.
    et revenir à surface si tu le désire.
    bref le memo a autant de page que l'on veut.

  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 420
    Points : 5 819
    Points
    5 819
    Par défaut
    salut

    euh il y a un problème dans les priorité de calcul
    je m'explique

    25
    *
    2
    -
    15
    = 35

    par contre

    25
    -
    15
    *
    2
    =
    30 c'est faux

    la multiplication ou la division sont des élément prioritaire
    normalement cela devrai être égale
    -5
    de plus on ne peut pas utilise les parenthèse c'est dommageable
    ce n'est donc que du calcul ligne a ligne
    le principe de base me plaisais bien pourtant


    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Je ne le pense pas anapurna pour les éléments prioritaires. Que cela soit la règle générale en programmation ou en calculatrice scientifique avec parenthèses, oui. Mais pas en calcul séquentiel, telle une calculatrice de base, la preuve la calculatrice window obtiendra 25 - 15 *2=20, comme celle ci. le résultat étant donné à chaque étape. Mais j'envisagerais bien une seconde version avec parenthèses plus tard (et fonctions de bases) , car plein de copains me le demande. le tout devant être manipulé au clavier et ergonomiquement viable.

  10. #10
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Je propose que vous critiquiez ce code
    Donc c'était surtout le code que tu voulais qu'on commente.

    Dès que je regardes le code source, il y a quelques remarques qui sautent aux yeux :
    1. Si on veut écrire du code claire, maintenable et réutilisable, il faut éviter les variables globales. Hors tu n'utilises que ça.
    2. Il faudrais sérieusement revoir la présentation du code :
    - 1 seule instruction par ligne. Donc, il ne faut pas écrire de truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     for I := 1 to j do if S[i]= test then begin result:= true; exit;end;
    - un if-then s'écrit toujours au moins sur deux lignes, un if-then-else sur 3.
    - Normalement, on respecte un minimum les règles dactilographique : On met un espace après les virgules. En france on met un espace avant et après les ":".
    - Il faut indenter le code correctement.

    Tant que le code ne sera pas mieux présenté, je ne suis pas sûr que quiconque aille regarder comment il est écrit...

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    En effet, franck en ce qui concerne la rédaction il faut être le plus clair possible.
    Je pensais que l'essentiel était de le commenter et pas forcement de l'aérer selon des règles que je ne connaissais pas. Au contraire j'ai tendance à compacter le code pour ne pas avoir des milliers de lignes à scroller, encore que, j'ai découvert il n'y pas longtemps la fonction "plier" de delphi, qui est d'un grand secours. Mais comme le code est destiné ici à être communiqué il vaut mieux en effet tout faire pour faciliter sa lecture. je commence à m'y employer.

    En se qui concerne les variables globales, on lit partout dans les ouvrages de programmation qu'il faut les limiter au maximum. Je suis bien d'accord avec ça, mais comment les éviter quand elles servent pour plein de procédures qui ne sont pas appeler de manière forcement séquentielles? elle sont pour moi (ici dans ce programme) des sauvegardes d'état (un tableau de bord). J'avais envisagé de créer carrément une classe et un objet qui géré l'état, mais un objet de ce type n'est t-il pas un coffre à globales maquillé?

    si on admet par exemple supprimer une globale en la remplaçant par une fonction, ou par un recalcul (car non sauvegardée), n'est ce pas du temps processeur perdu ou de la redondance? En revanche, je suis parfaitement d'accord qu'une globale utilisée dans une seule procédure est idiote. Ou bien quelque chose m'échappe, suis pas un pro.

    Mais tu as vu juste c'est bien de la critique de code que j'attends, et je vais revoir mes globales une à une pour explorer une autre façon de faire.

Discussions similaires

  1. Critique du livre Programmation iPhone OS3
    Par Jim_Nastiq dans le forum Livres
    Réponses: 7
    Dernier message: 31/01/2010, 17h23

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