[SP-pm] HERE-DOCS: Forma culta ? Quando usar ?
Luis Motta Campos
luismottacampos at yahoo.co.uk
Thu Nov 13 00:04:18 PST 2008
Bruno Borela wrote:
> Do livro "Perl Best Practices" do Damian Conway:
>
>> The "break-after-newlines-and-concatenate" approach is fine for a
>> small number of lines, but it starts to become inefficient - and
>> ugly - for larger chunks of text.
Bom, eu acho que eu tenho poder de fogo para discordar do Damian
Conway. :) Eu discordo, e me explico.
Se, por qualquer motivo que seja, você tem de misturar quantidades
absurdas de texto com seu programa, eu posso garantir que alguma coisa
está errada com seu projeto de software.
Eu não gosto e não recomendo usar here-docs para nada: eles são
desajeitados, menos óbvios que qualquer outro tipo de string literal, e
permitem que a gente construa estruturas gigantescas, separando o código
por um "mar" de texto.
Bom, qual é o problema? Erros lógicos são mais complicados de pegar se
você separa os "pedaços" e não pode olhar para todos eles ao mesmo tempo.
Claro, todo mundo um dia precisou cuspir uma mensagem grande, ou um
trechão de HTML ou Javascript, ou armazenar um "monstrinho SQL" em algum
lugar. As minhas recomendações, em ordem de preferência:
1. Se é uma coisa recorrente, encontre um módulo que resolva o
problema armazenando os dados em arquivos de dados (que podem ser lidos
conforme a conveniência).
2. Se você tem apenas um texto grande, use a secção __DATA__ do seu
programa.
3. Se você não está satisfeito com os módulos e tem mais de um texto
grande para gerenciar, use o módulo Exporter para implementar um ou mais
módulos (organize por alguma forma lógica e intuitiva) que exportem
constantes com o teu texto, e lá, longe da implementação das tuas regras
de negócio, use here-docs. Exemplo:
package My::Big::Text;
use strict;
use warnings;
use Exporter;
our ( @EXPORT_OK, @EXPORT ) = qw( $BigText );
$My::Big::Text = <<'BIG_TEXT' ;
bla bla bla
BIG_TEXT
__END__
Espero que isso sirva como exemplo para duas coisas:
1. O PBP é bom, mas não está sempre 100% correto. Use seu cérebro!
2. Existem formas mais "complicadas" de resolver o problema de uma forma
mais elegante. Isso é parte da filosofia básica por trás do Perl: TIMTOWTDI.
Putamplexos.
--
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.
More information about the SaoPaulo-pm
mailing list