Bonjour à tous,
Voilà, je bosse sur une appli Winform et j'essaye de faire les choses bien, du coup je sépare mon code au maximum pour que ce soit plus lisible et maintenable. Par contre, j'en viens à me demander s'il n'y a pas un problème de conception...
J'ai donc un fichier Form.cs (un seul écran) et d'autres fichiers .cs contenant mes classes... qui sont d'ailleurs, pour la plupart, des classes statiques renfermant soit des méthodes en tout genre soit des variables qui sont initialisées au chargement de l'application en lisant un App.config.
Voici donc un extrait de mes classes :
Du coup, j'aurais quelques questions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public static class Tools { public static void LoadConfig(); public static void GetValue(); public static ....(); } public static class Common { public static int[] myVar1; public static int[] myVar2; public static int[] myVar3; }
1°) Est-ce que l'utilisation de classes statiques est une bonne chose (la classe Common me permettant de stocker tout un tas de variables "globales" à l'application et la classe Tools de regrouper diverses méthodes sans pour autant que ce soit de la "vraie" programmation objet) ?
2°) Comment gérer les exceptions dans mes classes ? Si dans la classe Tools une Exception est levée lors de la lecture d'une valeur dans le App.config, actuellement voilà comment je procède (et j'imagine qu'il y a un truc qui cloche) :
3°) Depuis une classe Database (accès à la base et requétages) est-il possible et/ou judicieux d'accéder directement à un contrôle de ma Form ? Exemple d'un SELECT qui remplirait une ComboBox. Depuis la classe Database je n'arrive pas accéder directement aux contrôles de ma Form même s'ils sont en "Public". Je suis donc obligé de faire comme suit :
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 public static class Tools { public static void GetValue(xxx) { try { //lecture de la valeur pour la clée xxx } catch(Exception ex) { throw new Exception(ex.Message); } } } //et dans le code de ma Form : try { Toos.GetValue("toto"); } catch(Exception ex) { MessageBox.Show(ex.Message); }
Voilà, je m'arrête là pour l'instant... si vous êtes arrivés jusque là c'est déjà pas mal !
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 //code dans Database.cs public class Database { public List<string> GetList() { List<string> liste = new List<string>(); //requête du type: "SELECT nom FROM employes" qui remplit la liste return liste; } } // code dans Form.cs : List<string> maListe = objDatabase.GetList(); //parcours de "maListe" pour remplissage du ComboBox
Si vous avez un peu de temps pour me répondre ça serait cool !
Merci d'avance !
Lionel.
Partager