55 votes

Antipatterns C #

Pour couper une longue histoire courte: j'ai trouver la Java antipatterns une ressource indispensable. Pour les débutants autant que pour les professionnels. Je n'ai pas encore trouver quelque chose comme cela pour C#. Donc, je vais ouvrir cette question du wiki de la communauté et inviter tout le monde à partager leurs connaissances sur ce. Comme je suis novice en C#, je suis fortement intéressé par ce service, mais ne peut pas démarrer, avec quelques antipatterns :/

Voici les réponses que je trouve spécialement vrai pour C# et pas d'autres langues.

Je viens de copier/coller ces! Envisager de jeter un coup d'oeil sur les commentaires sur ces derniers aussi bien.


Jeter NullReferenceException

Jeter le mauvais exception:

if (FooLicenceKeyHolder == null)
    throw new NullReferenceException();

Propriétés vs Variables publiques

Les variables publiques dans les classes (utilisation d'une propriété au lieu).

À moins que la classe est un simple Objet de Transfert de Données.


Ne pas comprendre que le booléen est un type réel, pas seulement une convention

if (myBooleanVariable == true)
{
    ...
}

ou, encore mieux

if (myBooleanVariable != false)
{
    ...
}

Construit comme ces derniers sont souvent utilisés par C et C++ développeurs d'où l'idée d'une valeur booléenne était juste une convention (0 == false, autre chose est vraie); ce n'est pas nécessaire (ni souhaitable) en C# ou en d'autres langues qui ont de réelles valeurs booléennes.


À l'aide de using()

Ne faisant pas usage de using le cas échéant:

object variable;
variable.close(); //Old code, use IDisposable if available.
variable.Dispose(); //Same as close.  Avoid if possible use the using() { } pattern.
variable = null; //1. in release optimised away.  2. C# is GC so this doesn't do what was intended anyway.

62voto

rein Points 15639

Renvoyer l’exception de manière incorrecte. Pour renvoyer une exception:

 try
{
    // do some stuff here
}
catch (Exception ex)
{
    throw ex;  // INCORRECT
    throw;     // CORRECT
    throw new Exception("There was an error"); // INCORRECT
    throw new Exception("There was an error", ex); // CORRECT
}
 

40voto

Andrew Keith Points 5627

GC.Collect() à collecter au lieu de faire confiance au garbage collector.

30voto

sstewart Points 51

Je le vois trop, à la fois en Java et en C # ...

 if(something == true){
  somethingelse = true;
}
 

avec des points bonus s'il a aussi

 else{
  somethingelse = false;
}
 

25voto

Rubens Farias Points 33357
 using Microsoft.SharePoint;
 

'Nuff a dit

22voto

Benny Points 3279

Je vois beaucoup le code suivant:

 if (i==3)
       return true;
else
       return false;
 

devrait être:

        return (i==3);
 

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