32 votes

Le code C# sent mauvais. Quelles sont les plus courantes et comment les corriger ?

Cette question a déjà une réponse ici :
Question sur les "odeurs de code" d'Entity Framework

J'aimerais que vous me disiez quelles sont les odeurs de code que vous voyez le plus souvent dans le code C# et comment les corriger. Je travaille à la définition d'un processus de révision du code pour mon équipe et j'aimerais inclure une section avec les odeurs de code C# les plus courantes et une solution possible pour chacune d'entre elles. J'aimerais avoir l'aide de la communauté à ce sujet, afin que d'autres puissent réutiliser cette liste comme référence.

Quelles sont les odeurs les plus courantes que vous avez vues dans du code C# ? Comment les avez-vous corrigées ?

Veuillez ajouter une odeur de code par réponse De cette façon, je peux voir quels sont ceux qui sont les plus votés et donc les plus vus.

40voto

Julien Lebosquain Points 20894

L'un de ceux que je vois le plus souvent est l'utilisation de as au lieu d'un cast, sans aucune vérification de nullité. Je ne sais pas pourquoi les gens préfèrent utiliser as sur une distribution quand ils necesito un contrôle de type. Je préfère avoir un InvalidCastException qu'un NullReferenceException .

(control as TextBox).Text = ...;

Fixe :

((TextBox) control).Text = ...;

22voto

Chris S Points 32376

Traitement des exceptions des Pokemon

Inventé ici .

try
{

}
catch
{
   // I'm catching everything as I don't really 
   // know what my application is doing.
}

Une exception à cette règle est le cas où vous utilisez des bibliothèques tierces et où la documentation est si mince que vous n'avez aucune idée des exceptions que la bibliothèque pourrait lancer.

16voto

Oded Points 271275

De grandes classes avec des méthodes très longues.

Corriger : répartir les responsabilités dans différentes classes, remanier les méthodes pour qu'elles soient plus petites. Faites tout cela avec de bons tests unitaires autour du code.

13voto

Chris S Points 32376

Commentaires de Mouldy

Où le code de test commenté il y a 3 ans reste dans la base de code :

// Not sure if this will be needed
// int result = command.Setup();
// Command.WriteLine(result)

8voto

Steven Points 56939

Voici ma liste :

  • Code en double
  • Grandes fonctions
  • Trop d'arguments de méthode (>3)
  • Utilisation des arguments ref & out
  • Les objets de Dieu
  • Structure d'héritage profonde
  • Complicité artificielle
  • Legs refusé (lorsque vous rompez le PSL)
  • Utilisation incorrecte des globaux
  • Vide catch clauses.
  • Des chiffres magiques.
  • Plusieurs niveaux d'abstraction dans une seule méthode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X