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

breno breno em rio.pm.org
Terça Novembro 11 18:49:54 PST 2008


Ihhhh isso vai dar o que falar :-P

Sobre o abre-chaves, é uma longa discussão entre o formato K&R:

foo {
   ...
}

e o formato BSD/GNU:

foo
{
   ...
}

quando comecei a programar, só usava o formado BSD por achar bem mais
legível (o código fica separado, mais fácil de ler). Com o tempo,
passei a usar o formato BSD apenas para funções, e o formato K&R para
comandos internos (if, while, etc), pq além de economizar uma linha,
parecia fazer mais sentido (leia-se um pouco mais fácil de entender).
Daí talvez pelo costume ou pela homogeneização (como acabamos usando
muito mais comandos internos do que subs, hoje quase todos os meus
códigos usam K&R.

Sobre a vírgula separadora, o Perl Best Practices usa um argumento
interessante em favor da vírgula no final, que é o da reordenação: se
usamos a vírgula no início, trocar de ordem o primeiro elemento com
outro qualquer exige modificação no código. No caso do SQL, vale a
mesma coisa. Por exemplo:

SELECT algo AS "bla"
    , outracoisa AS "ble"
     ...

Se quiséssemos trocar "bla" e "ble" de ordem, não poderíamos
simplesmente copiar e colar sem um mínimo de cuidado, ou ficaria
assim:

SELECT , outracoisa AS "ble"
    algo AS "bla"
     ...

sim, é raro haver essa necessidade, e sim, é um erro óbvio e muito
fácil de ser achado. Mas com a vírgula no final ele some
completamente:

SELECT algo AS "bla",
    outracoisa AS "ble",
     ...

vira (copiando e colando):

SELECT outracoisa AS "ble",
    algo AS "bla",
     ...

e pronto. 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)

Em Perl específicamente, acho mais fácil separar elementos de lista
com a vírgula no final (até pq a vírgula no final sem item seguinte é
Perl válido):

my %bla = (
        bla => 'bla',
        ble => 'ble',     # vírgula após o último elemento
                             # ajuda a adicionar outros sem erro!
      );


No final, acho que o mais importante é escolher um estilo, qualquer
que seja, e ser consistente durante o código :-)

[]s

-b


2008/11/12 Joao Gabriel <jamorreu em gmail.com>:
> Olá povo.
>
> Últimamente eu ando muito preocupado em comparar códigos e em especial
> identação e marcação.
>
> Segue um exemplo de parte de um código SQL re-escrito pelo Luis:
>
>    , UPPER( FE.descr ) AS "descr"
>    , FE.total_parcelas AS "total_parcelas"
>    , FE.parcela_atual AS "parcela_atual"
>    , FE.valor_total AS "valor_total"
>    , FE.valor_com_deconto AS "valor_com_desconto"
>    , FE.valor_pago AS "valor_pago"
>    , FE.dias_tolerancia AS "dias_tolerancia"
>
> eu faria do seguinte modo (passaria a virgula para o final):
>
>    UPPER( FE.descr ) AS "descr",
>    FE.total_parcelas AS "total_parcelas",
>    FE.parcela_atual AS "parcela_atual",
>    FE.valor_total AS "valor_total",
>    FE.valor_com_deconto AS "valor_com_desconto",
>    FE.valor_pago AS "valor_pago",
>    FE.dias_tolerancia AS "dias_tolerancia",
>
>
>
> e em casos como:
>
> if(condição)
> {
>         conteudo aqui;
> }
>
> eu geralmente faço assim:
>
> if(condição) {
>         conteudo aqui;
> }
>
> Enfim, meu comentário é para iniciar um papo sobre identação e qual
> seria a melhor forma (ou a que aos olhos da maioria do pessoal seje
> melhor de entender).
>
> --
> João Gabriel C. Laass
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>


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