[SP-pm] O jeito SUPER de fazer as coisas

Luis Motta Campos luismottacampos at yahoo.co.uk
Sun Oct 12 00:29:26 PDT 2008


Daniel de Oliveira Mantovani wrote:
> Tava lendo o manual, quando encontro o "O jeito SUPER de fazer as coisas",
> do outro jeito funciona mas desse não:
> 
> #!/usr/bin/perl
> 
> 
> 
> #Animal = Classe(Classe é no sentido de categoria), speak = método.
> 
> {package Animal;
> sub speak {
> my $class = shift;
> print "O $class faz ", $class->som, "\n";
> }
> }
> 
> {package Rato;
> my @ISA = qw(Animal);
> sub som { "squeak" }
> sub speak {
> my $class = shift;
> $class->SUPER::speak;
> }
> }
> 
> Rato->speak;

Eu estou aqui apenas para falar dos problemas que você tem e não 
enxerga. O Eden Cardim já resolveu o problema que você viu e perguntou.

1. Eu não vi as linhas obrigatórias "use strict;" e "use warnings;" no 
teu programa;

2. Você tem chaves ("{", "}") demais. Não é preciso usar blocos para 
definir pacotes;

3. Você não sabe a diferença entre "my", "our", "use vars;" e qualificar 
variáveis com nome completo do pacote, e não faz idéia do motivo pelo 
qual usa estas coisas. Por favor volte a ler o manual a respeito disso. 
Conhecer escopo e saber declarar variáveis dentro de cada um dos 
diferentes possíveis escopos é fundamental para a boa aplicação de OO em 
Perl.

4. Você deveria instanciar seus objetos antes de invocar métodos sobre 
eles. Onde está o código de instanciação para a classe "Rato" (que, por 
sinal, deveria ser "Animal::Rato", para documentar a hierarquia). Eu sei 
que não é obrigatório ter uma instância para ser capaz de invocar 
métodos, mas pense nas consequências para a programação e para o teu 
aprendizado e você vai me dar razão.

5. Finalmente, use Perl::Tidy, e eu recomendo fortemente tentar usar 
Perl::Critic. Vai melhorar o teu estilo e vai ajudar muito a leitura.

Putamplexos.
-- 
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.


More information about the SaoPaulo-pm mailing list