BT

Novidades O InfoQ vem desenvolvendo uma série de novas funcionalidades para melhorar sua experiência com o site. Confira!

OOP é melhor para Estruturar o seu Código?

| por Sadek Drobi Seguir 0 Seguidores , traduzido por Douglas Masson Seguir 0 Seguidores em 17 dez 2008. Tempo estimado de leitura: 2 minutos |

Linguagens de Programação que oferecem mais poder e flexibilidade ultimamente foram ganhando força Johnatan Tang destaca, no entanto, a troca flexibilidade versus produtividade, entre outras coisas, devido ao fato de que a tradicional orientação a objetos torna mais fácil e direto organizar os programas.

Ele argumenta que as linguagens de despacho único, “dado um parâmetro ou outro valor, você sabe exatamente o que você pode fazer com ele”. Apesar de que código de linguagens estaticamente tipadas é mais revelador sobre os valores envolvidos, estruturalmente as linguagens tipadas são mais comuns, mas ainda dão uma idéia imediata de que operações estão disponíveis em determinado valor. E para ambos, linguagens estaticamente e estruturalmente tipadas, é muito claro o que deve ser feito se você quer executar uma operação que não é suportada por um determinado objeto:

Você escreve um método que realizada essa operação. Isso é problemático se não é você que controla essa classe, razão pelo qual o Ruby e o C# migraram para classes abertas. […]

E é geralmente obvio onde este método deveria ir: em uma classe que você precisa manipular.

Nas linguagens multi-dispatch, é muito menos evidente quando um método deve ser escrito e “qualparâmetro de um novo método poderia receber um [dado] valor”. Isto proporciona mais flexibilidade na organização do código, mas isso implica que mais decisões deverão ser tomadas sobre ele e mais esforço deve ser aplicado para manter estas decisões:

Então, cada vez que alguém usar esse método, eles devem relembrar quando foi definido e adicionar a declaração de importação apropriada. Se eles esquecerem, poderiam obter comportamento que não esperam, porque o método apropriado para a função genérica nem chegou a ser carregado.

Estabelecer convenções pode ser considera uma solução para esta questão. Contudo, Tang acredita que “convenções que não são impostas pela linguagem tendem de não serem seguidas”. Além disso, após tentar definir alguns padrões para disposição dos módulos, ele também afirma que“ isto é inerentemente ao domínio específico do problema: não há nenhum principio de organização correta que se aplique a todos os casos.”

Assim, segundo Johnatan Tang não há solução óbvia para esta troca entre flexibilidade versus produtividade ao organizar programas. E quanto à sua linguagem favorita? Que soluções você poderia encontrar? Dada sua experiência, há algum inconveniente entre os dois?

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT