Como outros disseram, isso depende do idioma. Mas vou demonstrar minhas idéias Java (e Java efetivo) sobre como inicializar variáveis. Estes devem ser utilizáveis para muitos outros idiomas de nível superior.
Constantes e variáveis de classe
Variáveis de classe - marcadas com static
em Java - são como constantes. Essas variáveis normalmente devem ser finais e inicializadas diretamente após a definição, usando =
ou de dentro de um bloco inicializador de classe static { // initialize here }
.
Campos
Como em muitos idiomas de nível superior e nos campos de script, será automaticamente atribuído um valor padrão. Para números e char
este será o valor zero. Para Strings e outros objetos, será null
. Agora null
é perigoso e deve ser usado com moderação. Portanto, esses campos devem ser configurados com um valor válido o mais rápido possível. O construtor é normalmente um lugar perfeito para isso. Para garantir que as variáveis sejam definidas durante o construtor e não sejam alteradas posteriormente, você pode marcá-las com a final
palavra - chave
Tente resistir ao desejo de usar null
como algum tipo de bandeira ou valor especial. É melhor, por exemplo, incluir um campo específico para manter o estado. Um campo com o nome state
que usa os valores de uma State
enumeração seria uma boa opção.
Parâmetros do método
Como as alterações nos valores dos parâmetros (sejam referências a objetos ou tipos básicos como números inteiros etc.) não serão vistas pelo chamador, os parâmetros devem ser marcados como final
. Isso significa que os valores da variável em si não podem ser alterados. Observe que o valor de instâncias de objetos mutáveis pode ser alterado, a referência não pode ser alterada para apontar para um objeto diferente ou, no null
entanto.
Variáveis locais
Variáveis locais não são inicializadas automaticamente; eles precisam ser inicializados antes que seu valor possa ser usado. Um método para garantir que sua variável seja inicializada é inicializá-la diretamente para algum tipo de valor padrão. No entanto, isso é algo que você não deve fazer. Na maioria das vezes, o valor padrão não é o que você esperaria.
É muito melhor definir apenas a variável exatamente onde você precisa da variável. Se a variável tiver apenas um valor único (o que é verdadeiro para a maioria das variáveis em bom código), você poderá marcar a variável final
. Isso garante que a variável local seja atribuída exatamente uma vez, não zero ou duas vezes. Um exemplo:
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
}
}
Observe que muitos idiomas o alertarão se uma variável permanecer não inicializada antes do uso. Verifique as especificações de idioma e os fóruns para ver se você não se preocupa desnecessariamente.