Todo desenvolvedor irá se deparar com sustentação de
sistemas em vários momentos de sua carreira, logo será inevitável ter que
efetuar manutenção em código alheio e existem coisas que são feitas no código fonte
que até tiram do sério até o mais puro desenvolvedor samaritano, vamos a elas:
Comentarista de Código
Todos sabemos a importância de comentar código fonte para
que esse conteúdo possa auxiliar num futuro próximo a manutentabilidade.
Entretanto para muitos desenvolvedores, simplesmente recebem o espírito de
comentarista esportivo ou comediante e os comentários acabam por narrar tudo
que está sendo feito ou declarar situação engraçadas, vejo o modelo abaixo:
public IHttpActionResult
Get()
{
// Criar lista de
retorno
List<LogModel>
lLogs = new
List<LogModel>();
try
{
// Efetuando conexão com o banco de
dados
using (SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["DbLog"].ConnectionString))
{
// Definindo o nome da
Stored Procedure
using (var
com = new
SqlCommand("ListLog", con))
{
// Abrindo conexão
con.Open();
// Recuperando os
dados
var dReader =
com.ExecuteReader();
//Percorrendo os dados
// Não MEXER, funciona como se DEVE
while (dReader.Read())
{
// Instância um novo
objeto na lista
lLogs.Add(new LogModel
{
// Preenchedo as
propriedades do objeto
Event = Convert.ToDateTime(dReader["DtEvent"]),
Actor =
dReader["DsActor"].ToString(),
Category =
dReader["DsCategory"].ToString(),
Content = dReader["DsContent"].ToString()
});
}
//Fechando a conexão
con.Close();
}
}
}
catch (Exception ex)
{
// Retornando erro (caso aconteceça)
return Content(HttpStatusCode.BadRequest, ex.Message);
}
// Retorna com sucesso a lista recuperada
return Ok(lLogs);
}
DICA: Faça comentários que agreguem a explicação das regras e não simplesmente explicar os comandos que a linguagem executa, imagine que outros desenvolvedores também sabem como utilizar os comandos.
Manipular as exceções
Quando uma linguagem é criada, os arquitetos têm que a
preocupação de criar mecanismos para retornar os erros quando acontecem e
formas de capturar essas exceções para que possam ser analisadas e tratadas.
Porém existem os “arquitetos” das aplicações que acreditam que podem criar
exceções melhores, simplesmente manipulando ou substituindo os conteúdos,
gerando resultado muitas vezes com pouca ou nenhuma informação pertinente.
static void Main()
{
double a = 98, b = 0;
double result = 0;
try
{
result = a / b;
Console.WriteLine("{0} dividido
por {1} = {2}", a, b, result);
}
catch (Exception e)
{
Throw New
Exception("Erro na divisão.");
}
}
DICA: Procure manter o estado original das exceções, efetuando no máximo acréscimo, porque dessa forma em outras camadas do sistema, será possível acessar informações mais precisas e completas.
Artista de Codificação
Manter um código bem indentado e organizado ajuda muito para
o processo de leitura e entendimento, entretanto alguns desenvolvedores vão
além desse conceito e se tornam verdadeiros artistas e criando belíssima obras
de artes, que muitas vezes impossibilitam a alteração por medo de estragar a
obra de arte (entenda-se mexer em algo que não dá para entender e estragar o
conjunto da obra)
public Indentation()
{ while (n > 0) { System.out.println(); n++; }
if (Cond1 == val1) { System.out.println("Cond1 is val1"); } else
if (Cond1 == val2) {
System.out.println("Cond2 is val2");
} else
{ System.out.println("No condition is satisfied"); }
switch (Val1) {
case 1: System.out.println("This is Java");
break; // Here is Java
case 2: System.out.println("This is C#");
break; // Here is .NET
case 3: System.out.println("This is Oracle");
break; // Here is Oracle
default: System.out.println("This can be anything"); break;
}
}
DICA: Quando mais claro e estruturado o código fonte, mais fácil ficará a visualização e o entendimento da cadência do código, evite a sobrecarga de comando em uma linha.
Uso de Números Mágicos
Muitos desenvolvedores acabam criando conhecimento ocultos
que acabam sendo transpassados para seus códigos fontes, uma dessas técnicas é
a utilização de números cabalísticos que alteram a lógica da programação pela
sua simples existência.
public
decimal ApplyDiscount(decimal price, AccountStatus accountStatus, int timeOfHavingAccountInYears)
{
decimal priceAfterDiscount = 0;
decimal discountForLoyaltyInPercentage = (timeOfHavingAccountInYears > 5) ?
(decimal)5
/ 100 : (decimal)timeOfHavingAccountInYears
/ 100;
if (accountStatus == 1)
{
priceAfterDiscount = price;
}
else if (accountStatus
== 2)
{
priceAfterDiscount = (price -
(0.1m * price)) - (discountForLoyaltyInPercentage * (price - (0.1m * price)));
}
else if (accountStatus
== 3)
{
priceAfterDiscount = (0.7m *
price) - (discountForLoyaltyInPercentage * (0.7m * price));
}
return priceAfterDiscount;
}
DICA: Nunca utilize valores “fixos” no código sem suas devidas referências, por exemplo, procure criar constantes ou ainda enumeradores para utilizá-los, além de centralizar seus valores referenciais, você ainda poderá declarar melhor seu proposito através de seus nomes.