Divisão da responsabilidade: preocupando-se com seu próprio negócio
A ocultação da implementação evolui naturalmente para uma discussão sobre a divisão da responsabilidade. Na seção anterior, você viu como poderia desacoplar código ocultando detalhes da implementação. A ocultação da implementação é apenas um passo na direção da escrita de código fracamente acoplado.
Para ter realmente código fracamente acoplado, você também deve ter uma divisão da responsabilidade correta. Divisão da responsabilidade correta significa que cada objeto deve executar uma função — sua responsabilidade — e executá-la bem. A divisão da responsabilidade correta também significa que o objeto é coesivo. Em outras palavras, não faz sentido encapsular muitas funções aleatórias e variáveis. Elas precisam ter um forte vínculo conceituai entre si. Todas as funções devem trabalhar no sentido de uma responsabilidade comum.
A ocultação da implementação e a responsabilidade andam lado a lado. Sem ocultação da implementação, a responsabilidade pode faltar em um objeto. É de responsabilidade do objeto saber como fazer seu trabalho. Se você deixar a implementação aberta para o mundo exterior, um usuário poderá começar a atuar diretamente na implementação — duplicando assim a responsabilidade.
Assim que dois objetos começam a fazer a mesma tarefa, você sabe que não tem uma divisão da responsabilidade correta. Quando você observar a existência de lógica redundante, precisará refazer seu código. Mas não se sinta mal; refazer o trabalho é uma parte esperada do ciclo de desenvolvimento OO. À medida que seus projetos amadurecerem, você encontrará muitas oportunidades para melhorá-los.
Vamos considerar um exemplo real de divisão da responsabilidades: o relacionamento entre gerente e programador.
Imagine que seu gerente venha até você, forneça as especificações de sua parte em um projeto e, em seguida, o deixe trabalhar. Ele sabe que você tem um trabalho a fazer e que sabe como fazer o melhor trabalho possível.
Agora, imagine que seu chefe não é tão esperto. Ele explica o projeto e pelo que você será responsável. Ele lhe garante que está lá para facilitar seu trabalho. Mas, quando você começa, ele puxa uma cadeira! Pelo resto do dia, seu chefe fica em cima de você e fornece instruções passo a passo, enquanto você codifica.
Embora o exemplo seja um tanto extremo, os programadores programam dessa maneira em seu código, o tempo todo. O encapsulamento é como o gerente eficiente. Como no mundo real, conhecimento e responsabilidade precisam ser delegados para aqueles que sabem como fazer o trabalho da melhor forma possível. Muitos programadores estruturam seu código como um chefe autoritário trata seus funcionários. Esse exemplo é facilmente transportado para os termos da programação.
Comentários
Postar um comentário