Jump to content
Sign in to follow this  
pedrotuga

Prototype Based OO

Recommended Posts

pedrotuga

Viva, boas tardes a todos.

Ultimamente tenho programado muito em javascript. Como reutilizo muito código escrito por terceiros, tenho tido contacto com vários conceitos novos para mim e mesmo alguns paradigmas que nunca tinha utilizado.

A feature que gosto mais na linguagem e que nem todas as liguages têm é o tratamento das funções como cidadãos de primeira classe. Mas isso fica para outro tópico.

O que tenho esmifrado ultimamente é a implementação do paradigma da programação implementada a objectos no javascript. Este paradigma, em javascript, usa um modelo baseado em protótipos.

Ora quem vem de outras linguagens com um suporte para POO mais classico, como é o meu caso que era programador de java até há pouco tempo, depara-se com uma abordagem radicalmente diferente.

Eu ainda não interiorizei bem as vantagens e desvantagens todas, só as mais óbvias.

Mas queria lançar o tópico para discussão. O que acham da programação orientada a objectos baseada em protótipos? Que vantagens valorizam? Que desvantagens lhe apontam? Em que situação é que acham que é mais conveninete?

Digam aí de vossa justiça.

Share this post


Link to post
Share on other sites
mjamado

pedrotuga, o uso da prototipagem em JavaScript prende-se apenas com... não tens outra hipótese. O JS não tem classes, logo, ou todas as funções pertencem ao namespace global - o que poderá levar a colisões, para além duma grande salganhada de funções à solta - ou então tens de usar prototipagem de objectos.

A desvantagem mais in-your-face, se usares prototipagem sem algumas doses de disciplina, é que ficas sem previsibilidade. É impossível olhar para o protótipo inicial e garantir que nada muda dali para a frente, visto que podes sempre aumentar o objecto em qualquer ponto do código. Para quem está habituado a ser lone ranger, pode não fazer grande confusão, mas para quem trabalha em equipa é logo uma dor de cabeça.

Como em JS não há outra maneira, lá na empresa temos uma regra tácita: os protótipos comportam-se como classes e ponto final. Depois da declaração inicial (que pode, ou não, ser um aumento de um protótipo anterior mais reduzido, à semelhança de uma herança em OOP "normal"), não se mexe mais nos atributos e métodos do protótipo. Se for necessário, acrescenta-se na definição, e nunca on-the-fly.

Por isso, da minha experiência pessoal: usar se tiver mesmo que ser, mas com muita disciplina de molde a evitar spaghetti-code.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.