Choses à ne pas faire
Je vous propose de dresser une liste de choses à ne surtout pas faire dans vos applications
Bonjour,
Je vous propose de lancer dans ce fil, une liste de choses à ne surtout pas faire dans vos applications.
Je suis sur une maintenance applicative d'un code qui a débuté il y a 10 ans, il est complexe et contient des tas de choses à ne pas faire (CANPF).
La CANPF du jour :
Sur une fiche, vous placez un code d'initialisation sur, au choix, OnCreate, OnShow, OnActivate...
Plus tard, vous avez besoin de lancer ce code d'initialisation dans un contexte spécifique...exemple la fiche concerne un client et vous avez un bouton qui permet de passer sur un autre client, du coup il faut reinitialiser la fiche avec ce nouveau client. Et là vous faites appel à FormShow(nil) par exemple:
et puis finalement vous remarquez que vous ne devez pas faire exactement le même traitement, la condition2 doit être fausse...deux solutions aussi moches l'une que l'autre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 procedure TForm1.FormShow(Sender: TObject); begin if Condition1 then ListBox1.ItemIndex := 12; if Condition2 then Label1.Visible := False; end; procedure TForm1.Button1Click(Sender: TObject); begin FormShow(nil); end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure TForm1.Button1Click(Sender: TObject); var OldCondition2: Boolean; begin OldCondition2 := Condition2; Condition2 := False; FormShow(nil); Condition2 := OldCondition2; end;à force de rustine de ce type vous finissez par avoir un code totalement illisible et incompréhensible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 procedure TForm1.FormShow(Sender: TObject); begin if Condition1 then ListBox1.ItemIndex := 12; if Condition2 and (Sender <> nil) then Label1.Visible := False; end;
donc ne faites JAMAIS ça ! la méthode FormShow doit être déclenchée par l'affichage de la fiche et point c'est tout !!!!
la bonne solution étant celle-ci par exemple :
Code : 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
18 procedure TForm1.FormShow(Sender: TObject); begin InitialiserListBox1; if Condition2 then Label1.Visible := False; end; procedure TForm1.Button1Click(Sender: TObject); begin InitialiserListBox1; end; procedure TForm1.InitialiserListBox1; begin if Condition1 then ListBox1.ItemIndex := 12; end;








Répondre avec citation
Partager