[Cascavel-pm] dicas de identação e marcação de códigos

Luis Motta Campos luismottacampos em yahoo.co.uk
Quarta Novembro 12 00:25:45 PST 2008


breno wrote:
> [...] A grande vantagem de fazer a separação em outra linha (motivo
> pelo qual acho que o Luis usou) é que fica mais fácil ver o que está
> acontecendo, especialmente em códigos SQL com muitos aninhamentos.
> (isso e o fato de que ele é um DBA experiente e sabe o que está
> fazendo :-P)

Boas, Breno, JG, pessoALL.

A norma SQL é bem inflexível sobre como interpretar SQL. As vírgulas são 
obrigatórias, e não podem, como no Perl, ficar "penduradas" na última 
sentença. Exemplo:

-- inválido, tem uma vírgula "sobrando" depois de "B"
SELECT A, B, FROM X;

Mas dizemos isso em Perl o tempo todo:
@X = ( A, B, ); # Perl 100% válido

Qual é a consequência? Bom, reordenar elementos no Perl é simples. Basta 
trocar a ordem, e cada elemento tem a sua "vírgula própria". Você 
simplesmente agarra um "bloco" completo e está feito. Em SQL, tem de 
haver um controle maior sobre onde estão as danadas das vírgulas. Por 
isso elas são o elemento de alinhamento. Assim, o programador ou DBA 
tira vantagem de uma habilidade inata dos humanos, o reconhecimento de 
padrões (é fácil, muito fácil, ver um "buraco" na coluna das vírgulas).

Por exemplo, é mais fácil ver onde está faltando vírgulas assim

SELECT this_is_a_function_name( argument, column_name ),
        this_is_a_name( argument, column_name ),
        thifunction_name( argument, column_name ),
        this_is_a_function_name( argument, column_name ),
        zzzz_name( argument, column_name )
        this_is_a_( argument, column_name ),
        this_ction_name( argument, column_name ),
        ths_is_a_function_name( argument, column_name )
FROM Whatever;

Ou assim?

SELECT this_is_a_function_name( argument, column_name )
      , this_is_a_name( argument, column_name )
      , thifunction_name( argument, column_name )
      , this_is_a_function_name( argument, column_name )
        zzzz_name( argument, column_name )
      , this_is_a_( argument, column_name )
      , this_ction_name( argument, column_name )
      , ths_is_a_function_name( argument, column_name )
FROM Whatever;

Lisonjeado por ser citado como exemplo, JG. Obrigado.
Putamplexos!
-- 
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.


Mais detalhes sobre a lista de discussão Cascavel-pm