Depois que deixei de utilizar Magic Numbers em minhas aplicações, as coisas se tornaram muito mais fáceis e flexiveis, inclusive para as outras pessoas que trabalham comigo. Além deixar de utilizá-los em controles de laços For Next, mudei a minha forma de recuperar os dados de meus DataReaders, onde defino as constantes com os nomes das colunas e seus respectivos valores que, são números inteiros que correspondem ao índice do campo que desejamos recuperar.
Um exemplo disso é exibido no código abaixo:
#region ” Colunas da DB “
const int ID = 0;
const int NOME = 1;
const int EMAIL = 2;
#endregion
Cliente c = new Cliente();
//….
c.Email = dr.GetString(EMAIL);
c.ID = dr.GetInt32(ID);
c.Nome = dr.GetString(NOME);
Isso também é uma das boas práticas que é explicado no bom livro chamado Code Complete. E antes que me perguntem se isso causa impacto na performance, eu já adianto que não, pois quando trabalhamos com constantes, ao compilar o código o compilador substitui automaticamente essas constantes pelo seu valor correspondente.