[SP-pm] Printer.pm - aberto a comentários.

Andre Carneiro andregarciacarneiro at gmail.com
Fri Jan 29 04:09:49 PST 2010


2010/1/28 Daniel de Oliveira Mantovani <daniel.oliveira.mantovani at gmail.com>

> Bom, com certeza eu não sou experiente, tudo o que sei é a minha pergunta.
> *Onde estão os testes e a documentação?*
>
> A identação está horrível, o seu tab está consumindo oito "espaços",
> ajuste seu editor de texto para consumir apenas quatro espaços.
>
> Isso é uma questão pessoal, Mantovani. Você pode não gostar de tabs mais
extensos, mas eu por exemplo, não enxergo porcaria nenhuma no seu código
onde tudo fica espremidinho. Então não tente 'forçar' alguém a escrever como
você escreve, só porque você acha melhor. Ao invés disso concentre-se em
ajudar a resolver o problema.



> Dei uma olhada rápida, e me atentei a essa sub rotina:
>
> sub manufacturer{
> my $self = $_[0];
>
> Aqui você pode usar, my $self = shift, vai ter *quase* o mesmo efeito
> do my $self = $_[0], aqui você poderia usar:
> my $self = shift;
> Eu particularmente acho muito mais elegante desse jeito com shift.
>
> open FABRICANTES,"<enterprise.txt";
>
> Sempre quando você usar open, use com três argumentos é mais seguro, e
> não esqueça do *die/warn*.
> Não use bareword, use uma variável.
> Olha só:
> open my $fabricante, q{<} 'enterprise.txt' or die $!
>


Q frescura! porque não simplesmente:
my $file = 'enterprise.txt'
eval{open my $fabricante,'<', $file};
if($!){
               print "\nProblemas ao abrir o arquivo '$file'  -  $!";
}else {
#Alguma coisa util aqui...

}


>
> Outra coisa muitíssima importante, sempre quando você abrir um arquivo
> feche-o, depois de utilizar(close $fabricante or die $!).
>
>
mantovani++


> my @objIDSplited = split /\./,$self->{SysObjID};
> while(<FABRICANTES>){
>
> Não é uma boa prática usar a variável $_ desse jeito, dificulta o
> entendimento do código, olha só:
>


É verdade, mas não é só por causa disso, Mantovani. O problema em se usar $_
dessa forma, é que você corre o risco do interpretador sobrescrever essa
variável em um trecho posterior do código(dependendo do código), e fica
difícil ter o controle disso, já que, somente o próprio Perl, é quem escreve
nessa variável especial e não você(Pelo menos até onde eu sei). Portanto é
mais seguro você guardar o valor de $_ o mais rápido possível em uma
variável que você possa observar e manipular de maneira mais controlada, ao
invés de usar $_ diretamente.

O outro lado disso é que atalhos existem para serem utilizados. Se você tem
certeza do que está fazendo, eu realmente não vejo problema em usar $_.



> while(my $fabri = <FABRICANTE>) {

if ($_ =~ /^$objIDSplited[6]\s/){
> chomp(my @str = split /\t/, $_);
> return ($str[1],$objIDSplited[6]) if wantarray;
> return $str[1];
> last;
>
> Esse "last" não tem sentido, quando você faz o "return" ele já termina.
>
> Olha esse jeito de fazer:
>
> wantarray ? return ($str[1],$objIDSplited[6]) : return $str[1];
>
> Três linhas por uma, só que bem mais complicado de entender. Nosso amigo
parece estar pouco familiarizado com esses 'atalhos', Mantovani. Embora você
tenha razão, é interessante que ele primeiro entenda alguns conceitos antes
de ter que lidar com esse tipo de 'atalho'. Tente explicar melhor o que você
está fazendo nesse trecho acima.



> Pronto, você troca 3 linhas por uma :)
>
>
> Tem outros "detalhes".
>
> }
> }
> }
>
> 2010/1/28 thiago User <thiago at nerdsland.net>:
> > Ok, Ok. Estou aprendendo a usar o git... coloquei uma versão do módulo
> > Printer.pm que eu uso no sistema de impressão que criamos na Petro - que
> > será batizado de SNMPrinter. Ainda não esta completo, mas estou aberto
> > aos comentários e criticas dos colegas mais experientes.
> >
> >
> > git://gist.github.com/289308.git
> > http://github.com/thiagoglauco/SNMPrinter
> >
> >
> > _______________________________________________
> > SaoPaulo-pm mailing list
> > SaoPaulo-pm at pm.org
> > http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>
>
> --
> "If you’ve never written anything thoughtful, then you’ve never had
> any difficult, important, or interesting thoughts. That’s the secret:
> people who don’t write, are people who don’t think."
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
André Garcia Carneiro
Analista/Desenvolvedor Perl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20100129/1ad0ad84/attachment-0001.html>


More information about the SaoPaulo-pm mailing list