2008-11-07 6 views
2

J'ai été chargé de rédiger la norme de programmation C# de notre département (y compris les lignes directrices). Quel genre de normes/lignes directrices dois-je inclure? J'ai déjà pris des morceaux de divers standards autour du net (et des morceaux de Code Complete), mais j'aimerais avoir des nouvelles des développeurs sur le terrain.Qu'est-ce qui devrait être inclus dans une norme de programmation C#?

J'ai déjà: Conventions d'attribution de noms - Général/Variables/Classes/Méthodes/Interfaces/Contrôles

pratiques générales de programmation - Documentation (commentaires, etc.), [WIP]

OO pratiques de programmation - Encapsulation, [WIP]

Quoi d'autre serait utile? Qu'est-ce que je ne devrais pas inclure?

Répondre

7

Avez-vous déjà suggéré que tout le monde lit le "Design Guidelines for Class Library Developers"? Cela couvre la plus grande partie. En dehors de cela, je voudrais marteler à la maison:

  • Vous devriez très rarement créer vos propres structs. Ne pensez pas à eux comme des classes légères.
  • Les structures ne doivent jamais être mutables.
  • N'essayez une programmation sans verrouillage que si vous êtes sûr qu'une solution plus simple sera trop lente - et que vous avez des preuves!
  • Lisibilité est roi
  • Soyez conscient des enjeux culturels - en particulier, lisez String Handling Recommendations Microsoft

Je vais ajouter plus que je pense à eux ...

2

Informations sur la façon de gérer les espaces de noms , conventions de nommage d'assembly/project/solution, conventions de noms de fichiers .. regroupement d'éléments (par exemple de votre élément et de votre objet sont-ils dans le même fichier?)

  • directives Nom de fichier
  • nommage Namespace/organisation des lignes directrices
  • conception & directives architecturales telles que l'utilisation des interfaces pour créer louse coupeling et de faire UnitTesting eaiser (pour par exemple l'injection de dépendance et moqueur)
  • : les conseils quand les choses devraient être refondus (méthodes longues et ainsi de suite)
  • Naming et le boîtier pour les paramètres
  • Lignes directrices sur les tests unitaires (si vous l'utilisez) et sur moqueur
  • Regroupement des éléments (par exemple de votre ont à la fois générique et non generi c implémentation d'une classe vont-ils dans le même fichier ou séparent-ils les fichiers suivant une convention de nommage?)
  • Comment gérer les dépendances 3ème partie
  • Promouvoir l'utilisation d'outils comme FxCop, StyleCop et d'autres paramètres

Juste quelques choses du haut de ma tête

1

Guides sur la méthode maximale la longueur, la taille maximum de la classe et la locus maximale dans un fichier source sont utiles. En outre, vous pouvez définir des directives sur l'indentation et la mise en page de code, mais j'ai trouvé cela plus simple avec les paramètres dans Visual Studio et ensuite vos développeurs ont importé le même fichier de paramètres pour cela. De cette façon, les gens n'ont pas à y penser et le studio visuel fait le travail pour eux.

Les bonnes pratiques peuvent également être vérifiées automatiquement par FXCop et des outils de ce type. Il est donc utile de distribuer des directives à ce sujet en créant simplement des fichiers FXCop qui vérifient toutes les règles qui vous intéressent. Ne pas introduire de gros chèques FXCop dans une grande base de code existant essayer si la montée en puissance des contrôles sur une période de temps si les gens ne se faire frapper avec 1000 d'erreurs FXCop

En bref:

Essayez de garder les lignes directrices Bref, n'incluez que des choses qui sont vraiment importantes. Rendez-les faciles à lire (vous pouvez écrire des conventions de nommage comme exemples par exemple où vous mettez en évidence toutes les règles avec des cases supplémentaires avec du texte) et utiliser des outils pour automatiser les vérifications afin que les développeurs puissent obtenir des retours rapides et faciles.