Meu melhor professor de português e redação dizia que a pontuação de um texto serve para o leitor respirar. Uma virgula, dê uma breve respirada. Um ponto, pare, concatene o que leu e dê uma boa respirada para seguir.
Mas porque raios estou falando de regras de redação em um blog sobre desenvolvimento de software? É porque o seu código-fonte também será lido por outras pessoas. Uma das responsabilidades de um desenvolvedor é escrever um código que possa ser facilmente lido por outros. Legibilidade é um dos fatores que caracteriza a qualidade de um código-fonte.
A pontuação de um código-fonte são os espaços e as linhas em branco. Esta "pontuação" ajuda o leitor a separar mentalmente os trechos de código e entender cada trecho, respirando entre uma linha e outra. Portanto, saber onde colocar espaços e linhas em branco é fundamental para nós desenvolvedores.
É lógico que cada desenvolvedor tem um estilo de código, criar regras rígidas e impostas não ajuda muito. O bom senso, às vezes, é o melhor remédio.
Então vamos logo para alguns exemplos práticos:
if (this.Age > 21)
{
this.setAllContent();
}
else
{
this.setRestrictedContent();
}
if (this.Gender == Gender.Male)
{
this.Salution = "Mr";
}
else
{
this.Salution = "Mrs";
}
Durante um cadastro várias características do usuário. No primeiro bloco if-else a idade define qual o tipo de conteúdo será disponibilizado. O segundo bloco, define o tratamento de acordo com o sexo.
Não há nada de errado no código, mas cada bloco trata de assuntos diferentes e independentes, portanto um espaço entre os dois blocos daria chance do leitor respirar e seguir para o próximo bloco. Sem o espaço o leitor tende a ler tudo junto como se os dois blocos tivessem alguma relação ou dependência entre si.
str _salution = this.Gender == Gender.Female ? "Mrs" : "Mr";
int z = x>y?x:y;
Posso ser meio burrinho, mas para mim operadores ternários não são muito intuitivos de se ler. Agora se você não colocar espaços no lugar certo, ai sim a coisa fica pior. Veja a diferença entre a primeira instrução, deivdamente espaçada, e a segunda.
public Name
{
get { return _name; }
set {_name=value;}
}
A diferença sutil entre o get e o set é simplesmente a utilização de espaços em branco. O set parece uma palavra só, fica mais difícil de se ler...
Por outro lado linhas em branco demais também não ajudam muito
if (this.Gender == Gender.Female)
{
this.Salution = "Mrs";
Console.Write("E ai gatinha?");
}
else
{
this.Salution = "Mr";
Console.Write("Vai encarar meu irmão??");
}
Desse jeito é necessário um monitor de 21 polegadas para ler uma simples instrução sem utilizar o scroll...
Tudo é uma questão de bom senso e de atenção. De vez quando parar e pensar: "Será que alguém vai entender o que estou escrevendo aqui?".
Legibilidade é produtividade, qualidade e respeito ao próximo (ao próximo infeliz que vai ter que consertar um bug que você deixou...)