Comme d'autres l'ont dit, cela dépend de la langue. Mais je vais démontrer mes idées Java (et Java efficace) sur l'initialisation des variables. Ceux-ci devraient être utilisables pour de nombreuses autres langues de niveau supérieur.
Constantes et variables de classe
Les variables de classe - marquées avec static
en Java - sont comme des constantes. Ces variables doivent normalement être finales et initialisées directement après la définition à l'aide =
ou à partir d'un bloc d'initialisation de classe static { // initialize here }
.
Des champs
Comme dans de nombreux langages de niveau supérieur et de script, une valeur par défaut sera automatiquement attribuée aux champs. Pour les nombres, char
ce sera la valeur zéro. Pour les cordes et autres objets, ce sera le cas null
. Il null
est maintenant dangereux et doit être utilisé avec parcimonie. Ces champs doivent donc être définis sur une valeur valide dès que possible. Le constructeur est normalement un endroit parfait pour cela. Pour vous assurer que les variables sont définies pendant le constructeur, et non modifiées par la suite, vous pouvez les marquer avec le final
mot - clé.
Essayez de résister à l'envie de l'utiliser null
comme une sorte de drapeau ou de valeur spéciale. Il est préférable, par exemple, d'inclure un champ spécifique pour conserver l'état. Un champ avec le nom state
qui utilise les valeurs d'une State
énumération serait un bon choix.
Paramètres de méthode
Étant donné que les modifications des valeurs des paramètres (qu'il s'agisse de références à des objets ou à des types de base tels que des entiers, etc.) ne seront pas vues par l'appelant, les paramètres doivent être marqués comme final
. Cela signifie que les valeurs de la variable elle-même ne peuvent pas être modifiées. Notez que la valeur des instances d'objets mutables peut être modifiée, la référence ne peut pas être modifiée pour pointer vers un objet différent ou null
bien.
Variables locales
Les variables locales ne sont pas automatiquement initialisées; ils doivent être initialisés avant que leur valeur puisse être utilisée. Une méthode pour vous assurer que votre variable est initialisée consiste à les initialiser directement à une sorte de valeur par défaut. C'est cependant quelque chose que vous ne devriez pas faire. La plupart du temps, la valeur par défaut n'est pas une valeur attendue.
Il est préférable de définir uniquement la variable précisément là où vous en avez besoin. Si la variable ne doit prendre qu'une seule valeur (ce qui est vrai pour la plupart des variables dans un bon code), vous pouvez marquer la variable final
. Cela garantit que la variable locale est affectée exactement une fois, pas zéro fois ou deux fois. Un exemple:
public static doMethod(final int x) {
final int y; // no assignment yet, it's final so it *must* be assigned
if (x < 0) {
y = 0;
} else if (x > 0) {
y = x;
} else {
// do nothing <- error, y not assigned if x = 0
// throwing an exception here is acceptable though
}
}
Notez que de nombreuses langues vous avertiront si une variable reste non initialisée avant utilisation. Consultez les spécifications linguistiques et les forums pour voir si vous ne vous inquiétez pas inutilement.