Possible en double:
Initialize class fields in constructor or at declaration?Est-il une mauvaise pratique à l'extérieur des champs d'initialiser un constructeur explicite
Nous plaidons sur les pratiques de codage. Les exemples ici sont un peu trop simples, mais la vraie affaire a plusieurs constructeurs. Afin d'initialiser les valeurs simples (par exemple les dates à leur valeur min) j'ai déplacé le code hors des constructeurs et dans les définitions de champ.
public class ConstructorExample
{
string _string = "John";
}
public class ConstructorExample2
{
string _string;
public ConstructorExample2()
{
_string = "John";
}
}
Comment doit-il être fait par le livre? J'ai tendance à être très au cas par cas et donc je suis peut-être un peu laxiste à propos de ce genre de chose. Cependant, je pense que le rasoir occams me dit de déplacer l'initialisation de plusieurs constructeurs. Bien sûr, je pourrais toujours déplacer cette initialisation partagée dans une méthode privée.
La question est essentiellement ... est l'initialisation des champs où ils sont définis par opposition au constructeur mauvais en aucune façon?
L'argument que je suis confronté est une gestion des erreurs, mais je ne pense pas qu'il est pertinent car il n'y a aucune exception possible qui ne seront pas ramassées au moment de la compilation.
duplication possible de [Meilleure pratique: Initialiser les champs de classe dans le constructeur ou à la déclaration?] (Http://stackoverflow.com/questions/24551/best-practice-initialize-class-fields-in-constructor-or-at -déclaration) –
c'est mais je ne trouve pas les réponses dans ce fil pour être convaincant - le premier est un peu dogmatique. La référence à FXCop est un argument fort, tout comme l'argument de maintenance et de chaînage des constructeurs mais à part cela, rien de trop factuel. –
Pour quelques conséquences intéressantes des différences subtiles entre l'initialisation sur le terrain et dans le corps, voir http://blogs.msdn.com/ericlippert/archive/2008/02/15/why-do-initializers-run-in- le-contraire-ordre-comme-constructeurs-part-one.aspx et http://blogs.msdn.com/ericlippert/archive/2008/02/18/why-do-initializers-run-in-the-opposite- order-as-constructors-part-two.aspx –