Estilo de Código

January 30th, 2007 § 7 comments

Um dos editores do Artima, em um artigo hoje, pergunta sobre as práticas de estilo de codificação usadas pelos leitores. Mais especificamente: qual o nível em que o leitor pratica isso, e se o leitor notou uma correlação com produtividade.

Eu confesso que eu sou extremamente chato quanto a isso. Em todos os projetos que participo diretamente, principalmente quando estou na frente do mesmo, eu controle absolutamente todos os aspectos de estilo de código. E, pelo que eu pude observar nos últimos anos, há uma correlação imediata entre estilo e produtividade pelo simples fato de que um estilo de codificação bem pensado ajuda imensamente na legibilidade e, conseqüentemente, na compreensão do código.

Obviamente, estilo é uma questão um tanto ou quanto pessoal. Eu tenho duas birras que tem a ver com estilo, mas que podem ser uma fonte de conflito: um, eu sempre alinho chaves em um linguagem que as possua; dois, eu detesto o caractere sublinhado. Ironicamente, Ruby, uma das minhas linguagens favoritas, vai contra essas duas tendências.

Durante os últimos anos, entretanto, eu cheguei à conclusão que uma linguagem tende a ganhar quando favorece automaticamente um estilo de codificação. Python, com sua indentação baseada em espaços é um exemplo clássico. Smalltalk também favorece um estilo definido de codificação que produz código extremamente elegante. Haskell exige certas convenções gramaticais. Nessas três linguagens, essas convenções não só facilitam a vida do programador quanto tornam o código mais óbvio.

Eu acredito que isso tenha um pouco a ver com a mentalidade de programador. Como a programação é intrinsecamente matemática, a busca por elegância é um alvo natural. Convenções de código tem, em termos, o mesmo papel que a notação matemática fornecendo uma maneira unificada de expressar abstrações e atributos do código de uma maneira sucinta e elegante. A analogia falha um pouco quando preferência pessoal entra em questão, mas é interessante perceber como certos conceitos se tornam comuns, permeando qualquer linguagem.

Em última instância, o estilo se torna uma ferramenta tão integral quanto testes e análise porque é parte da maneira de expressar o código. E, sendo assim, sua importância não pode ser subestimada–o que, eu acredito, justifica minha chatice.

§ 7 Responses to Estilo de Código"

  • Gobr says:

    Tenho apenas um leve conhecimento em programação, mas sempre gostei de Python, gosto de como o código fica.

    É legal ter um código limpo e de simples visualização.

  • Ronaldo says:

    Python é uma linguagem bonita, com exceção dos maledetos dos sublinhados. Por que será que o povo gosta tanto deles? Eu prefiro muito mais separar pelo caso da palavra. :-)

  • Certamente que a escolha de um estilo é importante para um projeto. Também considero o alinhamento das linhas algo muito importante.

    Para chaves e begin/end, eu alinho apenas o segundo e desconsidero o primeiro. Acho que é herança do velho BASIC com seu for/next. Para linguagens que utilizam chaves, acho discutível, mas para as que utilizam ‘end’, acho o ‘begin’ uma das palavras mais supérfulas que existe. Assim com o ‘next’, bastaria apenas exigir o ‘end’ no bloco.

    Acho Python legal mas precisa de um pouco de tempo para acostumar a ver o programa (onde começa e termina o que). Já os parênteses de Lisp, sou da opinião que devem ser fechados na linha e não nas colunas (como C, etc). No final, o código fica bem parecido com Python.

    No final, acho que todas as linguagens ficam quase iguais quando alinhadas corretamente. A diferença é que algumas necessitam de um terminador com chaves, ‘end’, ‘end for’, ‘next’ e outras não. Acho que vale um comentário sobre o GNAT (Ada) que avisa quando existe problemas na endentação do código. Pode ser apenas um erro de digitação, mas também pode ser um erro de lógica. 😉

    O sublinhado ou o CamelCase já é mais dependente de linguagem. Como existem linguagens que não conseguem diferenciar maiúsculas de minúsculas, pode acontecer um erro meio difícil de ser encontrado. Nã me incomodo com o sublinhado, mas até prefiro escrever tudo em minúsculas do que colocá-lo no meio de uma palavra.

    Para finalizar, concordo com o teu último parágrafo (não que eu tenha discordado do resto do texto). Tenho como costume, antes de salvar um programa que digitei no Emacs, selecionar todo o texto e pressionar Ctrl+Alt+\ para endentar todo o programa. Já aconteceu de uma linha que deveria estar na primeira coluna aparecer deslocada. Sinal claro que devo olhar o código e corrigí-lo antes de rodar.

    Parece que estou na fase de escrever cartas em vez de apenas comentários. :-)

  • Gobr says:

    Não sei se é por costume mas gosto do sublinhado, se bem que não uso muita OO (por falta de conhecimento) então acho que não vem ao caso.

  • Ronaldo says:

    Guaracy, concordo com basicamente tudo. Só não sei se concordo com “[n]o final, acho que todas as linguagens ficam quase iguais quando alinhadas corretamente”.

    No uso de algumas linguagens, eu tenho a mesma sensação de prazer ao escrever uma linha de código que tenho quando resolvo um problema matemático. E cheguei à conclusão que isso vem tanto da flexibilidade e poder da linguagem quanto do ato simples de usar a sintaxe da linguagem. É óbvio que ao usar PHP com OOP, por exemplo, é muito mas interessante do que sem OP, mas isso é algo que de fato transcende a semântica.

    Não sei se consegui me expressar bem. No final, é como você falou sobre ADA. A elegância acaba servindo de parâmetro para correção.

    Gobr, acho que você não precisa se preocupar: sublinhado realmente é uma pura questão de gosto. Eu tenho gastura, mas consigo usar. Outros, gostam por causa da tradição, OOP ou não.

  • Walter Cruz says:

    Gosto da idéia de padronização de estilo.

    Eu ainda não estou tão fanático assim, mas sempre procuro seguir um estilo. É curioso que enquanto python e smalltalk favorecem um estilo, php não favorece estilo nenhum, permite todos, e nunca fica bonito de fato. (bonito não é bem a palavra que quero dizer, talvez seja coesão. Caramba, tá difícil :) )

  • Ronaldo says:

    Eu acho que a palavra é bonito mesmo. O Smalltalk é bonito e o Python, ao seu modo. :-) O PHP sempre dá aquela sensação de mistura, principalmente quando entre o HTML direto no meio. E mesmo com um templateengine dá uma sensação ruim. Não é elegante.

Leave a Reply

Your email address will not be published. Required fields are marked *

What's this?

You are currently reading Estilo de Código at Superfície Reflexiva.

meta