
Object Calisthenics: princípios para escrever um código realmente orientado a objetos
Object Calisthenics: princípios para escrever um código realmente orientado a objetos
Em um mundo onde a legibilidade e a manutenibilidade do código são cruciais, não basta que o código “funcione” — ele precisa ser elegante, limpo e alinhado com os princípios da orientação a objetos. Nesse contexto, surge o conceito de Object Calisthenics, um conjunto de práticas que visa tornar o código mais expressivo e orientado a objetos de verdade.
O que é Object Calisthenics?
O termo “calisthenics” vem do grego e remete a exercícios físicos que usam apenas o peso do próprio corpo. Aplicado ao mundo do software, Object Calisthenics propõe um conjunto de “exercícios mentais” para programadores que desejam melhorar sua prática diária de escrita de código orientado a objetos.
Essas regras foram apresentadas originalmente por Jeff Bay no livro The ThoughtWorks Anthology, e têm como objetivo forçar os desenvolvedores a adotar práticas que favoreçam encapsulamento, coesão, desacoplamento e legibilidade — os pilares de um bom design OO.
Para que serve?
Object Calisthenics não é uma metodologia formal, nem um padrão obrigatório. Trata-se de um treinamento prático, um desafio que ajuda os desenvolvedores a se afastarem de vícios estruturais herdados da programação procedural e realmente mergulharem na lógica da orientação a objetos.
O objetivo não é seguir as regras à risca para sempre, mas sim refinar o pensamento orientado a objetos, encorajando melhores decisões de design.
As 9 regras do Object Calisthenics
Embora nosso foco aqui seja discutir a filosofia por trás do conceito, vale apresentar brevemente as 9 regras originais:
- Only one level of indentation per method
- Don’t use the ELSE keyword
- Wrap all primitives and strings
- First class collections
- One dot per line
- Don’t abbreviate
- Keep all entities small
- No classes with more than two instance variables
- No getters/setters/properties
Sim, você leu certo: “No getters/setters”. E esse ponto merece uma atenção especial.
Por que evitar Getters e Setters?
Embora sejam largamente utilizados, os métodos get/set quebram o encapsulamento, um dos princípios fundamentais da orientação a objetos.
Quando você expõe atributos através de getters e setters, está abrindo mão do controle sobre o comportamento do seu objeto. Você transforma sua classe em um simples contêiner de dados, e o código que consome esses dados passa a tomar decisões que deveriam pertencer ao próprio objeto.
Imagine uma classe Pedido
com um getter getValorTotal()
. Outro componente do sistema acessa esse valor e decide, por conta própria, se o pedido pode ser finalizado. Isso viola o princípio de Tell, don’t ask — diga ao objeto o que fazer, não pergunte o que ele sabe.
Em vez de if (pedido.getValorTotal() > 1000)
, prefira algo como if (pedido.estaAcimaDoLimite())
. Assim, o comportamento permanece encapsulado dentro da classe, respeitando a abstração.
Conclusão
Object Calisthenics não é sobre regras rígidas, mas sim sobre desenvolver disciplina, consciência e boas práticas. Trata-se de um exercício que força o desenvolvedor a pensar em objetos de maneira mais pura, a escrever código mais expressivo e a evitar atalhos que comprometem o design no longo prazo.
Mesmo que você não adote todas as regras permanentemente, experimentá-las durante um projeto pode transformar profundamente a forma como você escreve software.
Na Hausti, aplicamos rigor técnico e práticas de engenharia de software para garantir que cada solução entregue vá além da funcionalidade — buscamos excelência em design, performance e manutenibilidade. Conheça nossos projetos e veja como podemos transformar sua ideia em uma solução robusta e elegante.