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

C# Discussion :

Conventions à respecter en C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut Conventions à respecter en C#
    Bonjour,

    je suis occupé d'apprendre le C# à partir d'un tutoriel de developpez. Cependant, certains points ne sont manifestement abordés par rapport aux bonne pratique et j'aimerais donc savoir quelles sont les bonne pratiques à respecter par rapport à ces points afin d'être facilement maintenable pour d'autres developpeurs C#.

    Convention de nommage: Quelles sont les règles à respecter par rapport aux noms des méthodes, des classes, des attributs, des constantes, des propriétés des objets. En java, par exemple, les méthodes & attributs doivent être en lowerCamelCase, les classes en UpperCamelCase, et les constantes en UPPER_CASE, les packages en lowercase. A part pour les constantes, on utilise pas les "_", etc...


    Conventions d'organisation des fichiers: Comment doit-on organiser les fichiers dans un projet: un dossier par namespace? un fichier .cs par classe ou plutot un fichier .cs par groupe de classe liées entre-elle? Les fichiers .cs doivent-ils avoir les mêmes noms que les classes à l'intérieur?

    Convention sur les namespaces: Travaille-t-on avec des namespaces à plusieurs niveau (en java la recommandation est du style. com.company.module.subpackage.....) ou un seul niveau?

    Gestion des dépendances et du build: quels outils sont à disposition pour s'assurer que le build soit reproductible sur n'importe quelle stations, quels outils sont à dispositions pour préciser les modules tiers dont dépendrait l'application? Peux-t-on compiler avec une ligne de commande?

  2. #2
    Membre très actif
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2011
    Messages
    457
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2011
    Messages : 457
    Par défaut
    Salut Le Moderateur

    dans C# c'est une language de programmaiton Oriente objet,
    d'ou on ecrit avant chaque methode public/private/protected , ceci pour les classes qui vont etre utilise avec instance , ou static si appelle du methode par le nom du class.

    a propos du nom du methode et son prototype tu peux ecrire
    public/private/proteced [type de retour] [nom du methode] (parametre d'entree)
    {
    }
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public int calculersomme(int a , int b)
               { int c=a+b;
                 return c
                 }
    la language est case senstive tu peux ecrire Calculer , differente que calculer
    int i , I ;

    il n'y a les contraintes de upper el low pour le nom du class tout marche ,
    pour voir s'il ya d'erreur press F6 , Debug F5

    a propos fichier .cs et les autres questions je ne connais pas,

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Si j'ai bien compris, il veux savoir s'il y a des normes, et non le "minimum à faire pour que ça compile".

    Quelques exemples de norme :

    Une méthode public
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public int CalculerSomme(int a , int b)
    {
    	int c = a + b;
    	return c;
    }
    Une méthode privée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private int calculerProduit(int a , int b)
    {
    	int c = a * b;
    	return c;
    }
    Une propriété
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private string _nom;
     
    public string Nom
    {
    	get { return _nom; }
    	set { _nom = value; }
    }

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Oui, c'est bien les conventions que je cherche, pas la grammaire du language en lui même, ça je l'ai

  5. #5
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut tchize

    Personellement j'ai trouvé a peu pres autant de convention qu'il y avait de programmeur et beaucoup de pseudo convention qui sont plus des effets de modes

    Cependant je comprends fort bien ton louable souci et personnelement j'ai mis en place quelques conventions de mon cru ou issues de rencontres qui me conviennent autant qu'aux dévellopeurs avec qui je travaille :

    Les constantes en majuscules et eventuellement aérées par des _ : MA_CONSTANTE_A

    Toutes les types de classes prefixées par C_ (ca permet de mieux les distinguer des instances)
    Les Enum prefixées par E_
    Les singletons CS_

    Les methodes en UpperCamelCase
    Les Fields en _lowerCamelCase (avec _ comme prefixe)
    Les proppriétés publiques en UpperCamelCase
    Les propriétées privées en lowerCamelCase

    Passage a la ligne systématique pour les accollades
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (Toto)
    {
      Tutu=5;
    }
    J'aere en plaçant des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    // *************************************************
    Entre chaques methodes
    Et j'utilise pas mal les régions

    Pour les NameSpace j'essaye de les limiter et faire en sorte qu'ils soient representatif d'un ensemble homogene contrairement au designer Csharp qui te cree un suffixe de namepace a chaque folder du projet.
    Par conttre j'essaye d'organiser le projet en plusieurs folder

    - Les classes business
    - Les form
    - Les classes Common (outils)

    etc..

    Ah oui j'oubliais quelques erreurs classiques de débutants

    1- TOUJOURS faire attention a nommer TOUT DE SUITE les controls d'une form et eviter de laisser faire le travail par le designes

    txbPoidsTotal plutot que TextBox1
    MonPremierProject au lieu de WindowsFormApplication1
    etc..

    Et aussi

    Eviter tres attentivement de pondre le code dans les handler d'event des controls de form mais placer un appel de methode dans ce handler

    Essayer de concenter les traitements metier dans des classe et fichier séparés des Form (meme si la tentation est grande de tout coller dans la form)




    Bonne Chance

    Allez la Belgique !

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ben je suppose qu'au minimum dans les APIs de bases, il dois y avoir un certains nombre de conventions (du style une interface commence par I) etc

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    j'ajouterai en plus de l'excelente réponse d'olibara je précéde mes propriété de m_ ou s_ selon si la propriété est statique ou non.

    Sinon, je recommande au passage un excelent livre à tous les initiés voulant apprendre comment structurer son code pour le rendre facile à maintenir :
    [ame="http://www.amazon.com/Agile-Principles-Patterns-Practices-C/dp/0131857258/ref=zg_bs_3962_1/178-3143453-1523555"]Amazon.com: Agile Principles, Patterns, and Practices in C# (9780131857254): Robert C. Martin, Micah Martin: Books@@AMEPARAM@@http://ecx.images-amazon.com/images/I/51aTfzB-dvL.@@AMEPARAM@@51aTfzB-dvL[/ame]

  8. #8
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Dans mon équipe, on a Resharper. En plus du fait qu'il aide pas mal à faire des trucs sympas, il gueule dès que les conventions ne sont pas respectées.

  9. #9
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    j'aurais simplement envie de dire de regarder les descriptifs de classe de msdn... on a déjà un bon apperçu du nommage courrant.
    pas de notation hongroise, pas de pise de tête :
    variable : titiTutuToto
    Classe, méthode, prop, etc. TitiTutuToTo
    interface : ITitiTutuToto...
    constantes... là, on fait d'habitude TITI_TUTU_TOTO... mais ce n'est pas une norme, plus un usage répendu...
    de même nombre de gens utilisent le _ pour préfixer ce qui est privé...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment respecter les conventions typographiques québécoises?
    Par pineapple_hunter dans le forum Mise en forme
    Réponses: 10
    Dernier message: 23/08/2012, 06h24
  2. Merci de respecter les regles du forum
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 2
    Dernier message: 17/11/2005, 12h48
  3. A respecter lors de l'envoi d'un message (Version 2)
    Par Aurelien.Regat-Barrel dans le forum Windows
    Réponses: 0
    Dernier message: 04/01/2003, 15h59
  4. À lire (et à respecter) avant de poster !
    Par Community Management dans le forum Windows
    Réponses: 0
    Dernier message: 30/12/2002, 11h06

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