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

VB.NET Discussion :

[vb.net]Organisation de code "bibliothèque" de function


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut [vb.net]Organisation de code "bibliothèque" de function
    Bonjour,

    Je commence à avoir beaucoup de code dans mon projet, et je commence à avoir du mal à m'y repérer et j'aimerai regrouper des functions/procédures par rapport à leur action.

    Je voulais savoir si il était possible ,en vb.net, de créer des "bibliothèques" de function/procedure, un peu comme en php.

    Je voulais aussi savoir comment les implémenter sous visual basic 2008 Express.

    J'avais essayer en ajoutant une nouvelle classe, mais j'avais certains problème avec des variables pourtant déclaré public inaccessible dans la nouvelle classe crée.

    J'attends vos conseil pour l'organisation de code.

    merci d'avance

  2. #2
    Membre averti
    Avatar de Ogotcha
    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Points : 398
    Points
    398
    Par défaut
    Un truc qui est pas mal ce sont les régions qui te permettent de regrouper une partie de ton code.

    Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #Region "Nom de ta région"
     
       Private Function TaFonction() as Boolean
     
       End Function
     
    #End Region

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    bonjour,

    Oui j'utilise déjà cette notion de région qui est super pratique, permettant de regrouper un ensemble de function et de déplier/ replier ce groupe très facilement.

    Cependant je sais pas pourquoi ca ne suffit pas pour organiser mon code. J'ai 1112 lignes de code et j'aimerai avoir une organisation clair.

    Histoire de gagner du temps dans le developpement et la maintenance du code.

    Je voulais aussi savoir si il y avait moyen de cloner la vu d'un fichier dans le split d'écran afin de voir 2 parties du même fichier?

    Je suis preneur de toute idée, bonne pratique et autre.

    Encore merci pour ta réponse

    ++

  4. #4
    Membre averti
    Avatar de Ogotcha
    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Points : 398
    Points
    398
    Par défaut
    1112 lignes c'est sur que cela fait un paquet de code, de fonctions, etc... pour informations, là sur le projet actuel sur lequel je suis, mon "petit" formulaire est à 1600 lignes j'organise mon code de manière à avoir les traitements privés dans une région, les traitements d'évènements du formulaire et des contrôles dans une autre etc...

    Je voulais aussi savoir si il y avait moyen de cloner la vu d'un fichier dans le split d'écran afin de voir 2 parties du même fichier?
    Là, je ne sais pas si cela est possible de splitter sur l'écran ton fichier...

  5. #5
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    utilise la programmation orienté objet avec une organisation en couches :

    - un projet pour les fonctions SQL
    - un projet pour le traitement métier
    - un projet pour la présentation de ton application
    - ...

    A voir Bref Aperçu de la séparation des couches dans un projet OO

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    bonjour ,

    J'avais tenté de passer tous les éléments par exemple de manipulation de fichier excel dans une classe afin d'en faire des méthode.

    Mon soucis c que ce code fait référence à certaine variable qu'il ne "voit" pas depuis cette classe. J'ai donc fait machine arrière.

    J'ai encore énormément de mal avec la Poo.

    Pourtant j'ai bien ma classe de manipulation de cle de registre et de connexion à la base de donnée, que j'ai récupéré depuis d'autre projet.

    Par contre l'appel à mes requêtes est dans le code et j'aimerai l'en dissocier par exemple, un peu comme dans mon code php ou j'ai un fichier par requête que j'include quand j'ai besoin.

    Je te remercie pour ton article, cependant il reste vague, le top serai un tuto d'un cas classique, que l'on transforme d'une version de programmation "classique" en une version modulable.

    L'autre soucis c que je n'est pas de temps pour faire une analyse objet, j'aurai peut etre du le prendre. La je vais finir le projet pour qu'il marche je verrai pour mes prochains projet à intégrer une phase d'analyse objet. Mais j'avoue avoir pas mal de difficulté avec le concept orienté objet.

    Cependant dans un premier temps n'existe-t-il pas une manière simple d' externalisé un ensemble de fonction en les rendant accessible au code "principale".

    Me souviens qu'en Delphi, je faisait un fichier avec un certain nombre de primitive dans laquel je piochais. Je faisais un uses sur le fichier ce qui permettait au programme de "voir" les fonctions :
    http://www.delphibasics.co.uk/RTL.asp?Name=Uses

    Un peu comme les fichiers .h en C.

    N'existe-t-il pas cette possibilité en vb.net?

    voilà voilà

    encore merci

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour,

    En cherchant un peu, il semble que les modules remplissent cette tache, je vais tester.

    j'ai trouvé un tit tuto pour les utiliser :
    http://www.homeandlearn.co.uk/net/nets9p8.html

    Je vais voir si ca fonctionne

    ++

  8. #8
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Pensez aussi aux classes partielles, qui permettent d'organiser une classe sur plusieurs fichiers.

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 174
    Points : 25 115
    Points
    25 115
    Par défaut
    (lu en diagonale)

    il est possible de faire des régions dans un fichier
    il est possible de splitter l'écran sur le même fichier
    il est possible de faire des dossiers dans un projet afin de regrouper plusieurs fichiers d'un même type ou qui traitent du même sujet
    il est possible de faire des dll pour regrouper des plus grosses parties
    il y a aussi les namespace qui permettent un découpage logique des "domaines" de l'application

    1000 lignes de code c'est pas énorme pour une classe, pour un formulaire c'est déjà plus rare, le mieux est que le code d'un formulaire ne s'occupe que de la mise en page et qu'il utilise d'autres classes pour les traitements

  10. #10
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    Citation Envoyé par narutobaka Voir le message
    bonjour ,

    J'avais tenté de passer tous les éléments par exemple de manipulation de fichier excel dans une classe afin d'en faire des méthode.

    Mon soucis c que ce code fait référence à certaine variable qu'il ne "voit" pas depuis cette classe. J'ai donc fait machine arrière.

    J'ai encore énormément de mal avec la Poo.
    c'est l'occasion ou jamais d'apprendre la programmation orienté objet

    c'est tout à fait normal qu'il ne "voit" pas certain de tes variables car chaque variable à une portée et pour des raisons de sécurité de codes et autres chaque type de variable à un rôle ! il y a le Public, le Private, le shared, ...

    je te conseille de voir ce cours sur la portée des variables et d'une façon générale de voir le cours programmation OO (ce cours la est une vrai mine d'or où tu trouves tout !)

    A+

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    bonjour,

    1000 lignes de code c'est pas énorme pour une classe
    C pas tant que ca soit énorme pour une classe c surtout que j'ai du mal à m'y retrouver. Même si c pas beaucoup de ligne je perds du temps à recherche la position d'une fonction.

    D'ailleur je voulais savoir si il existait un explorateur de function que l'on a crée ?histoire qu'en un clic on retombe dessus s'en perdre du temps à la trouver.

    Sinon de manière général comment organiser les fonctions pour les retrouver plus vite?

    il est possible de splitter l'écran sur le même fichier
    cette manipulation m'interesse comment fais-tu pour splitter+cloner un même fichier?

    Pensez aussi aux classes partielles, qui permettent d'organiser une classe sur plusieurs fichiers.
    Tu veux dire qu'il est possible découper une classe vb en plusieurs partie? Tiens je vais regarder cela. Aurais-tu un lien vers un exemple?
    Quels sont les contraintes de ce type de découpage?

    c'est l'occasion ou jamais d'apprendre la programmation orienté objet
    Ouaip je sais, d'ailleur c un petit projet sur lequel je suis en train de travailler.
    Je dois récupérer des données dans un entrepôt de donnée, effectuer un traitement de calcule sur ces données et généré un fichier excel avec une feuille générale contenant tous les salariés et avec des feuilles regroupant les salarié par maitrise et par secteur.

    J'ai déjà :
    - un objet de connection à la base de donnée
    - un objet de manipulation des cles de registre

    Le soucis c que dans mon analyse je n'ai pas fait d'analyse objet, et j'ai déjà rendu un calendrier prévisionnel plus que serré trop d'ailleurs peut-être. De plus j'ai déjà écrit un peu de code et je ne vois pas comment reformater en objet.

    Je suis preneur de tout conseil

    En tout cas merci pour vos réponse

    ++

  12. #12
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 174
    Points : 25 115
    Points
    25 115
    Par défaut
    Citation Envoyé par narutobaka Voir le message
    D'ailleur je voulais savoir si il existait un explorateur de function que l'on a crée ?histoire qu'en un clic on retombe dessus s'en perdre du temps à la trouver.
    oui en haut du code, dans le combobox de gauche tu as la liste des classes modules, et dans celui de droite la listes des membres, donc tu peux arriver directement sur une fonction

    Citation Envoyé par narutobaka Voir le message
    cette manipulation m'interesse comment fais-tu pour splitter+cloner un même fichier?
    menu fenetre / fractionner il me semble


    Citation Envoyé par narutobaka Voir le message
    Tu veux dire qu'il est possible découper une classe vb en plusieurs partie? Tiens je vais regarder cela. Aurais-tu un lien vers un exemple?
    Quels sont les contraintes de ce type de découpage?
    on peut en effet découper une classe dans plusieurs fichiers via Partial Class, c'est déjà le cas pour les forms, toute la partie design est caché dans un partial class
    pour voir les fichiers cachés, il faut cocher sur le 2ème icone de l'explorateur de solutions

    il est même possible de découper des subs, enfin le code ne doit etre qu'à un endroit par contre mais la définition peut être ailleurs (les cas où c'est utile sont rares)

  13. #13
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Citation Envoyé par narutobaka Voir le message
    cette manipulation m'interesse comment fais-tu pour splitter+cloner un même fichier?
    En haut de l'ascenseur de la fenêtre du code, tu as un petit carré gris, double-clic dessus et tu auras ta fenêtre déparée en deux.


    Citation Envoyé par narutobaka Voir le message
    Tu veux dire qu'il est possible découper une classe vb en plusieurs partie? Tiens je vais regarder cela. Aurais-tu un lien vers un exemple?
    Quels sont les contraintes de ce type de découpage?
    A priori, aucune contrainte à part celle de mettre la mot clé partial et de situer les classes dans le même namespace :

    Dans le fichier MyClass.Datas.CS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public partial class MyClass
    {
        private String _name = String.Empty;
    }
    Dans le fichier MyClass.Methods.cs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public partial class MyClass
    {
        public String Hello()
        {
            return "Hello " + this._name;
        }
    }

    Je n'ai pas mis le namespace, mais ce doit être le même.

    Et il n'y a pas de contrainte sur les noms de fichier, mais il vaut mieux les regrouper sous le même préfixe pour les retrouver aisément

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    bonjour,

    Je suis en train de lire une doc sur les classes partielles :

    http://books.google.com/books?id=S2N...age&q=&f=false

    Par contre eux aussi parle de namespace. Et je ne sais absolument pas à quoi fait référence cette notion. Vais faire aussi une ptite recherche de ce côté là.

    En haut de l'ascenseur de la fenêtre du code, tu as un petit carré gris, double-clic dessus et tu auras ta fenêtre déparée en deux.
    trop fort cette fonctionnalité. Je n'aurais absolument pas penser à double cliquer sur ce petit carré gris .

    oui en haut du code, dans le combobox de gauche tu as la liste des classes modules, et dans celui de droite la listes des membres, donc tu peux arriver directement sur une fonction
    Je viens de remarquer cette liste déroulante. Ca va me faire gagner du temps

    Encore un énorme merci pour vos tuyaux

  15. #15
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 174
    Points : 25 115
    Points
    25 115
    Par défaut
    les namespace ca sert juste à ranger

    par exemple system.windows.forms.button
    button est une classe
    system windows et forms sont des namespace

    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public class maclasse
    end class
    il suffit ensuite de faire
    ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    namespace monespacedenom
     
        public class maclasse
        end class
     
    end namespace
    et alors il faudrait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim c as new monespacedenom.maclasse
    c'est un peu comme des dossiers

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour

    Donc si je reprends l'exemple de laedit en y ajoutant les namespaces :

    Dans le fichier MyClass.Datas.CS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    Namespace monprojet
     
    public partial class MyClass
    {
        private String _name = String.Empty;
    }
     
    End Namespace
    Dans le fichier MyClass.Methods.cs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Namespace monprojet
     
    public partial class MyClass
    {
        public String Hello()
        {
            return "Hello " + this._name;
        }
    }
     
    End Namespace
    ai-je bien compris le principe des namespace ?

    encore merci

    ++

  17. #17
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 174
    Points : 25 115
    Points
    25 115
    Par défaut
    oui

    un exemple peut etre plus parlant de l'utilité des namespace
    dans le framework y a plein de classes (des milliers ou dizaines de milliers)
    si elles étaient toutes au meme endroit, ca serait le bordel
    donc la classe button est dans system.windows.forms
    la classe bitmap est dans system.Drawing
    ou encore la classe thread est dans system.threading

    de la meme manière dans ton appli tu peux ranger
    dim f as new monappli.forms.FRMmachin
    dim t as new monappli.traitements.teltraitement
    plutot que de tout laisser à la racine

    d'ailleurs ton projet a un namespace par défaut, réglable dans les propriétés du projet

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    bonjour

    oui j'ai vu cela, le fichier setting.vb?

    avec un namespace par defaut nommé "My"

    ++

Discussions similaires

  1. [VB.Net 1.1] Comment "échapper" une quote ?
    Par arnolem dans le forum VB.NET
    Réponses: 1
    Dernier message: 07/09/2006, 10h39

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