BABALL: JEU DE BALLE

FREMYCOMPANY Messages postés 276 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 22 décembre 2008 - 28 juil. 2007 à 21:22
jean_marc_n2 Messages postés 170 Date d'inscription jeudi 11 décembre 2003 Statut Membre Dernière intervention 24 janvier 2009 - 31 juil. 2007 à 13:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43591-baball-jeu-de-balle

jean_marc_n2 Messages postés 170 Date d'inscription jeudi 11 décembre 2003 Statut Membre Dernière intervention 24 janvier 2009
31 juil. 2007 à 13:45
Hello,

Voici quelques remarques, ne les prend pas mal stp, j'essaie juste d'être constructif.

1) Utilisation massive de variables globales, dans Mod.bas : A proscrire absolument

2) En plus d'être globales (ce qui est déjà mal en soi), certaines ne sont pas typées (par exemple dans mod.bas : Public Direc )

3) Tu mélanges la notation correcte (Dim truc as Type) avec une notation ancienne (Dim a%). L'usage de cette notation est à éviter, en tout cas le mélange à proscrire absolument

4) Tout est HARD-CODE, ce qui est le pire défaut de tous. Des trucs du genre "NewTemps = Int(65 * Rnd + 1)" sont une horreur. Tout doit être défini sous forme ce constantes (typées et commentées).
Dans la fonction NewDirec(), c'est particulièrement grave. Et que dire de T_Timer() ou tu répètes des dizaines de fois le nombre "120". Pour tout changement que tu voudrais faire, c'est des dizaines de lignes à rechercher et à changer, avec la garantie d'en oublier une au passage!

5) Programmation structurée: le code est plein de Goto, à des endroits ou ce n'est pas du tout nécessaire. La procédure O_click() est illisible, et je ne parle même pas de la modifier ou de la maintenir: mission impossible.

6) Mauvaise pratique du langage. Je n'en citerais qu'une, dans OpenScore:
Open App.Path & "\Score.ini" For Input As 1

Hyper Dangereux et carrément incorect. On écrit:
Dim f as Integer
f = Freefile
Open "xxx" For Input As #f

7) Mélange des genres. Dans OpenScore (dans mod.bas), tu écris dans la forme principale: C'est 2 fois mal: a) un module ne doit pas essayer d'accéder sauvagement à une forme b) tu introduis un couplage innaproprié entre 2 choses qui n'ont rien à voir

8) Convention de nommage : Les variables a%, Tbl, V sont mal nommées. Impossible de savoir ce qu'elles font et à quoi elles servent

9) il y a un appel brutal à Form_load en plein milieu d'une fonction: pratique hyper dangereuse et pouvant conduire à des comportements totalement erratiques (du genre tu fermes ton programme et tu crois qu'il est terminé, mais jette donc un oeil dans le gestionnaire de taches, tu pourrais avoir des surprises...)

10) Un de tes controles s'appelle "I" : impossible de faire pire, sachant que a) c'est illisible, b) la variable "I" est depuis la nuit des temps réservée par convention au controle des boulces For.

11) Utilisation de trucs horribles comme:
If Fois "5" Then TNiveau.Enabled False: Fois = 0: LblNiveau(0).Visible = False: LblNiveau(1).Visible = False: Exit Sub
=> Ceci est à éviter à tout prix: c'est moche, c'est illisble, c'est in-maintenable, etc.

12) Des tas de variables ne sont même pas déclarées, par exemple Tb$ ; Tu éviterais ca en commenàant toutes tes sources et modules par Option Explicit

13) Mélange des langues: OpenScore, WriteScore, (anglais) mais "Argent", "Niveau", etc. Il faut choisir, puis rester uniforme.

J'arrète la.

Tout ceci pour dire qu'il y a du travail. Moyennant quoi le découpage est plus ou moins correct, je pense que tu peux refaire une version propre, ne serait ce qu'à titre d'exercice :-)

Bravo quand même pour ta première source :-)
FREMYCOMPANY Messages postés 276 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 22 décembre 2008
28 juil. 2007 à 21:22
Pas mal pour une première source
Rejoignez-nous