[SP-pm] OOA&D de vez em quando morde...
Luis Motta Campos
luismottacampos em yahoo.co.uk
Terça Março 20 04:57:31 PDT 2007
On Mar 20, 2007, at 11:58 AM, Igor Sutton Lopes wrote:
> On 2007/03/20, at 10:31, Luis Motta Campos wrote:
>> Espero que isso te ajude a entender por que eu acho que OOA&D pode
>> morder.
>> Putamplexos!
>
> Eu gosto do paradigma de orientação à objetos, e ainda assim
> concordo com o Luis. Isto por que temos que separar a engenharia de
> software como o Luis mencionou das buzzwords atuais. Estas
> buzzwords adicionam muita complexidade desnecessária, e graças a
> $deity Perl permite que você misture e escolha da maneira mais
> apropriada à isto.
>
> O que isto quer dizer? Isto quer dizer que você pode muito bem
> utilizar um framework orientado à papéis (roles) como o Catalyst e
> escrever o resto do código utilizando código procedural. Ou
> orientado à objetos. Ou spaghetti code. Ou...
>
> Orientação à objetos é bom sim, mas tem limite. Perl te dá opções,
> escolha a que mais tem a ver com o seu trabalho - desenvolvimento
> de sistemas web, programas de automação de sistemas operacionais,
> etc - e escolha a que melhor lhe convir. E lembremos sempre de
> utilizar *consistência*, e este é o principal problema hoje.
Você falou, falou, falou, mas não chegou a lugar nenhum, Igor.
Quando eu disse "OOA&D morde" eu deveria ter dito "Engenharia de
Software morde". É apenas uma questão de enquadramento.
Quando a gente cria sistemas (sigam eles o Paradigma da Orientação
a Objetos ou qualquer outro), na verdade, criamos restrições. Muitas
delas são muito úteis e permitem que o sistemas que a gente constrói
funcionem como a gente espera. Mas nem sempre é este o único efeito
destas regras. Muitas vezes, elas tem como efeito colateral coisas
inesperadas, que vão affetar a sua capacidade de resolver problemas
com boas soluções.
Eu não estou defendendo que a gente deva tolerar as soluções
ruins, muito pelo contrário. Defendo que um sistema bem pensado desde
o princípio, quando é "só um quebra-galho" garante que você não vai
ficar amarrado a regras, interfaces e restrições em geral que vão te
"obrigar" a fazer código ruim em algum momento futuro.
Em outras palavras: antes de implementar uma interface, pensa
primeiro se ela não vai conseguir te morder no futuro. Não implemente
coisas dependentes de um sistema que pode mudar, por exemplo, ou você
vai precisar implementar de novo muito em breve (por que tudo nesta
vida é passageiro, exceto o motorista e o cobrador...)
Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
Mais detalhes sobre a lista de discussão SaoPaulo-pm