Object Calisthenics - MarcosPiccoli/DotNetPractices GitHub Wiki
Object Calisthenics
A principal motivação para o Object Calisthenics é aplicar alguns princípios do SOLID. Basicamente são um conjunto de boas práticas e regras de programação para aumentar a qualidade do seu código.
Essas regras são focadas em manutenibilidade, legibilidade, testabilidade e compreensão de seu código.
Se você já escreve um código com boa manutenção, legível, testável e compreensível, essas regras o ajudarão a escrever um código ainda mais sustentável, mais legível, mais testável e mais compreensível.
O conceito do Object Calisthenics, ao todo, é composto 9 regras. Para mim, o ideal é ser aplicado ao menos, as regras 2, 6 e 7, detalhadas abaixo:
2. Don't use “Else” keyword
A ideia deste conceito é evitar o máximo possível o uso do “else” e assumindo que temos um fluxo padrão de execução.
Tabs {.tabset}
Exemplo 1
public IActionResult Login(String username, String password)
{
var view = String.Empty;
if (!userRepository.isValid(username, password))
{
ModelState.AddModelError("error", "Bad credentials");
view = "Login";
}
else
{
view = "Home";
}
return View(view);
}
Exemplo 2
public IActionResult Login(String username, String password)
{
if (!userRepository.isValid(username, password))
{
ModelState.AddModelError("error", "Bad credentials");
return "Login";
}
else
{
return "Home";
}
}
Exemplo correto
public IActionResult Login(String username, String password)
{
if (!userRepository.isValid(username, password))
{
ModelState.AddModelError("error", "Bad credentials");
return View("Login");
}
return View("Home");
}
6. Don’t Abbreviate
Porque queremos abreviar o nome de uma variável ou um método ? Lembre-se que o ter um nome com um bom significado ajuda muito no entendimento do código.
A recomendação desta regra é não usar nomes abreviados e com significado.
7. Keep All Entities Small
Essa regra fala para não termos classes com mais de 50 linhas. Apesar de ser um número realmente pequeno de linhas, acreditamos que o ideal é não ultrapassar 200 linhas.
O conceito principal desta regra é não termos classes com muitas linhas de código, justamente porque são mais difíceis de entender e de manter.