Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Referente ao encapsulamento e TDD

Uma reflexão que tive foi a seguinte:

No TDD criamos testes que indicam como nossa classe deve se comportar. Para verificar esse comportamento, vi em muitos exemplos a utilização de getters. Um dos princípios do encapsulamento é não criar getters e setters desnecessários, pois eles quebram o encapsulamento da classe.

Se não tivermos cuidado, podemos facilmente criar um getter somente com a finalidade de passar no teste. Quais meios podemos utilizar para evitar este deslize? Sei que é um problema de design e que depende de cada caso. Mas isto deve ocorrer com certa frequência com programadores novos na área. Como fazer para evitar isto?

Desde já agradeço a todas as colaborações.

2 respostas
solução!

A verdade é que qualquer programador pode chegar no software e fazer códigos ruins. Mas quando ele usa um objeto bem escrito, a chance maior é de seguir a lógica que o objeto já entrega, e usar apenas os métodos que ele oferece (se forem o necessário para resolver o problema).

O caso é que além de um bom código, uma empresa precisa de bons processos de treino da equipe e organização dos projetos. Trabalhei em uma empresa que começou muito bem seus códigos, mas depois de uma década de equipes mal treinadas, hoje a empresa é dona de um software monstruoso e com tantos bugs e problemas, que a única solução é reescreve-lo inteiro.

A única forma de evitar que os programadores destruam uma boa organização do código é treinando bem a equipe e tendo uma empresa organizada.

Documentar é algo importante também. Já está no conceito de "projeto organizado". Uma boa documentação ajuda a mostrar o motivo da classe funcionar como funciona. E se ela funciona sem certos getters em setters, mas tem caminhos próprios para obter e setar tais informações, é por lá que o programador irá ao ler a documentação.

Oi Jeferson,

A resposta do Artur foi muito boa. Concordo com ele.

Você tem que usar sua experiência pra saber que não pode cometer tal pecado! :)

Um abraço!