<font class="Apple-style-span" face="&#39;courier new&#39;, monospace">Oi Thiago, antes de qualquer coisa preciso declarar os meus parabéns para a tua iniciativa e coragem de colocar o teu código a comentários do pessoal. O meu comentário não será de precisão pois estou sem muito tempo para isto, mas acho que já vão ajudar.</font><div>

<font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">1o. Enfatizando o Lorn, considere imediatamente utilizar o </font><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">Module::Starter (</font><a href="http://search.cpan.org/~petdance/Module-Starter-1.54/lib/Module/Starter.pm"><span class="Apple-style-span" style="text-decoration: none;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#000000">http://search.cpan.org/~petdance/Module-Starter-1.54/lib/Module/Starter.pm</font></font></span></a><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">), utilizar a estrutura de diretórios e o padrão de documentação POD;</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">2o. Como disse o Luis, utilize o </font><span class="Apple-style-span" style="border-collapse: collapse; "><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">Perl::Tidy;</font></span></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">3o. considere trocar o &#39;</font><span class="Apple-style-span" style="line-height: 17px; white-space: pre; "><span class="k" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">our</font></span><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"> </font><span class="nv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">%alarmCode&#39; por &#39;my </font><span class="Apple-style-span" style="line-height: 17px; "><span class="nv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">%alarmCode&#39;. A diferença básica está na definição de escopo desta variável;</font></span></span></span></span></div>

<div><span class="Apple-style-span" style="line-height: 16px; white-space: pre; "><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></span></div><div><span class="Apple-style-span" style="line-height: 16px; white-space: pre; "><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">4o. Recomendo utilizar fortemente uma variável comum ao invéz de um file handler, tecnicamente chamados isto de &#39;</font><span class="Apple-style-span" style="line-height: normal; white-space: normal; "><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">anonymous filehandle</font><span class="Apple-style-span" style="line-height: 16px; white-space: pre; "><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">&#39;. Primeiro é preciso entender que file handler é uma variável global, então se vc tiver um módulo (tal como o teu) que possa ser chamado por mais de uma vez no mesmo programa, isto significa que você terá uma oportunidade muito grande de gerar um bug difícil de achar. Não vou entrar nos detalhes aqui, mas vc pode fazer um teste simples: abre o mesmo arquivo com o mesmo filehandle em duas posições diferentes do código, e veja o resultado. Outra vantagem no anonymous filehandle, é que o recurso fica aberto enquanto está no escopo, então quando vc sai do escopo, o recurso é encerrado automaticamente. Em situação normal isto significa que vc não precisa do &#39;close ($file)&#39;;<br>

</font></span></span></span></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 16px; white-space: pre;"><br></span></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 16px; white-space: pre;">5o. Não sei se é legal algumas verificações que você faz no new (o checkIsLive, por exemplo). Pois aqui tem 2 problemas para mim. Uma verificação deste tipo no new só faz sentido se caso o recurso não existir, você para completamente a execução do programa ( die if ! checkIsLive ). Do contrário não faz sentido esta verificação que vc faz, pois você precisaria fazê-lo em outros lugares. Então, a minha recomendação é : só deixe no new as atribuições que só fazem sentido no new (tipo definição de valores padrão, caso não tenha sido definido na criação do objeto);</span></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 16px; white-space: pre;"><br></span></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 16px; white-space: pre;">6o. ainda no new, vc está quase que exeutando tudo já no new. isto não faz muito sentido em OO, pense bem nisto; </span></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 16px; white-space: pre;"><br></span></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 16px; white-space: pre;">7o. o checkIsLive (eu colocaria apenas is_live) tem que estar próximo de que vai utilizar, neste nestido eu poderia utilizar no <span class="Apple-style-span" style="line-height: 17px; ">snmpSession (por exemplo);</span></span></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 17px; white-space: pre;"><br></span></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 17px; white-space: pre;">8o. ainda no snmpSession, eu recomendo não misturar retorno de erro com retorno de dados. Então eu recomendo :  </span></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 17px; white-space: pre;">   * sempre utilizar o return para o erro;</span></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 17px; white-space: pre;">   * passe o resultado através de alguma referência na passagem de parâmetros, ou já coloque na estrutura do teu $self (pois vejo que você utiliza isto no futuro)</span></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 17px; white-space: pre;"><br></span></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 17px; white-space: pre;">9o. considere a definição do arquivo &#39;<span class="Apple-style-span" style="font-family: &#39;Bitstream Vera Sans Mono&#39;, Courier, monospace; font-size: 12px; ">enterprise.txt&#39; ser uma opção mas com valor padrão &#39;enterprise.txt&#39;;</span></span></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 17px; white-space: pre;"><br></span></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 17px; white-space: pre;">10o. por uma questão mais pessoal, eu não gosto muito de coisas como checkIsLive, ou loadAllSNMP. Isto é mais Java like, eu gosto mais separar por &#39;_&#39;, então eu faria is_live, all_snmp. Mas isto é questão pessoal.</span></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="line-height: 16px; white-space: pre; "><br></span></font></div><div><br><div class="gmail_quote">Em 28 de janeiro de 2010 22:51, thiago User <span dir="ltr">&lt;<a href="mailto:thiago@nerdsland.net">thiago@nerdsland.net</a>&gt;</span> escreveu:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Ok, Ok. Estou aprendendo a usar o git... coloquei uma versão do módulo<br>
Printer.pm que eu uso no sistema de impressão que criamos na Petro - que<br>
será batizado de SNMPrinter. Ainda não esta completo, mas estou aberto<br>
aos comentários e criticas dos colegas mais experientes.<br>
<br>
<br>
git://<a href="http://gist.github.com/289308.git" target="_blank">gist.github.com/289308.git</a><br>
<a href="http://github.com/thiagoglauco/SNMPrinter" target="_blank">http://github.com/thiagoglauco/SNMPrinter</a><br>
<br>
<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a></blockquote></div><br><br clear="all"><br>-- <br>&quot;o animal satisfeito dorme&quot;. - Guimarães Rosa<br>


</div>