O que é um código bonito? [fechadas]

30

Costumo ler que os desenvolvedores devem escrever um código bonito, mas para um iniciante, ainda é obscuro o que é código bonito e como você o reconhece?

A pergunta corolária é: como escrever um código bonito e quais são alguns hábitos práticos para melhorar a qualidade do seu código? , com o que devo me preocupar em tornar o código que escrevo bonito (e o que devo aprender).

torr
fonte
4
É apenas uma figura de linguagem. A beleza está nos olhos de quem vê e, além disso, trata-se da clareza das instruções que você estabeleceu em um arquivo de texto para resolver um problema e da facilidade com que você ou qualquer outra pessoa pode modificá-lo e mantê-lo no futuro. Além disso, quanto mais beleza seu código exala depende inteiramente de você - identações, estrutura modular, complexidade, eficiência simultaneamente com fácil legibilidade, convenções de nomenclatura, etc.
bad_keypoints
Você pode estar interessado em ler Beautiful Code: Os principais programadores explicam como eles pensam !
UncleZeiv

Respostas:

55

"A beleza é comprada pelo julgamento do olho".

Dito isso, acho que a maioria dos programadores concorda que o código bonito demonstra um equilíbrio entre clareza e transparência, elegância, eficiência e estética.

  • Clareza e transparência : clareza é a facilidade com que um leitor pode deduzir o que o código faz. Código transparente faz o que parece fazer. Se o código parece fazer uma coisa, mas realmente faz outra coisa (ou algo mais), não é transparente - é enganoso.

  • Elegância : existem muitas maneiras de implementar a maioria dos algoritmos, mas algumas são desajeitadas, enquanto outras são organizadas e graciosas. A sucessão geralmente acrescenta elegância, mas a sucessão excessiva pode reduzir a clareza.

  • Eficiência : evitando o uso desnecessário de recursos (como tempo de CPU, memória e E / S).

  • Estética : ser fácil para os olhos. Isso é bastante subjetivo. Tudo se resume ao estilo. Uma consideração importante é ter um estilo consistente . Código que muda, por exemplo, recuando estilo no meio, é feio.

Igby Largeman
fonte
11
uma explicação bonita, +1
koenmetsu 12/08
2
Eu retiraria "Eficiência". Embora, em sentido estrito, seja positivo, incluí-lo na lista pode, na melhor das hipóteses, enganar. Normalmente, é um subproduto dos outros e deve ser uma preocupação secundária no momento da codificação. A principal razão é que, na maioria das vezes, ele só se manifesta após o compilador ter trabalhado sua magia negra.
DPM
@ Jubbat De fato - às vezes a solução mais eficiente leva a um código muito feio. (Por exemplo, a função clássica rápido Inverse Square Root)
Darrel Hoffman
@DarrelHoffman Certo, embora esse compromisso também seja verdadeiro com mais variáveis ​​que definem bom código, não apenas a eficiência e o restante (há uma boa explicação longa sobre isso em "Código completo" - infelizmente não me lembro em qual seção do livro, perto do provavelmente- começando)
DPM
@Jubbat: Eu concordo que a eficiência geralmente é uma preocupação secundária, mas ainda acho que isso é fator na equação da beleza.
Igby Largeman
20

Não deixe que as pessoas o enganem, pensando que o código bonito é o seguinte:

  • algoritmos inteligentes
  • recursos de linguagem sorrateira
  • resolvendo um problema com a menor quantidade de pressionamentos de tecla

Porque não é. Um código como esse é bonito , e certamente vale a pena dar uma olhada, mas não é o tipo de código que você deseja estabelecer.

E você sabe que o polimorfismo estático meta-modelado recursivo sofisticado que herda lambdas variáveis ​​- ou o que você leu online? Você pode estar ansioso para usar truques inovadores e bacanas, sem uma razão clara para usá-los. Mas o código que ultrapassa os limites de um idioma também não é bonito.

Eles são sexy .
Toneladas de diversão, mas pergunte a si mesmo: desejo realmente gastar um tempo explorando a anatomia dessa linguagem ou quero trabalhar em conjunto com uma linguagem e criar algo bonito? Afinal, uma linguagem de programação é apenas a ferramenta para criar.


Então, o que é um código bonito então?

Código bonito = código de manutenção. É ISSO AÍ!
Essa é a fórmula!

Se você pode escrever algo, volte a ele alguns meses depois e continue progredindo, então isso é lindo. Se um ano depois, você perceber que deseja adicionar funcionalidade, além de ajustar um recurso existente, e conseguir fazê-lo com relativa facilidade, isso é lindo. Se outras pessoas puderem entrar na sua base de código e descobrir rapidamente o que está acontecendo porque as coisas estão organizadas, elas terão mais cabelo e também serão lindas.

Portanto, a verdadeira pergunta que você deseja fazer é: "Como escrevo códigos mais sustentáveis?". Receio que seja uma pergunta maior e uma disciplina bastante criativa. Continue escrevendo o código, mas desta vez não se pergunte se pode ser mais bonito. Pergunte a si mesmo se você pode torná-lo mais sustentável.

Trevor Hickey
fonte
4
Para combater os problemas que você levanta, também há conselhos para c2.com/cgi/wiki?KillYourDarlings
jk.
4

Minha opinião é que "código bonito" não é um termo objetivo ou particularmente útil. E não devemos tentar defini-lo.


As definições de dicionário típicas da palavra em inglês "beauty" são assim:

  • "1. a combinação de todas as qualidades de uma pessoa ou coisa que encanta os sentidos e agrada à mente"
  • "1. a qualidade presente em uma pessoa ou coisa que proporciona intenso prazer estético ou profunda satisfação à mente ou aos sentidos."
  • "1. A qualidade que dá prazer à mente ou aos sentidos e está associada a propriedades como harmonia de forma ou cor, excelência artística, veracidade e originalidade."

(Fonte http://dictionary.com )

O ponto comum é que "beleza" é o que é esteticamente agradável. Isso é necessariamente subjetivo ... como ilustrado pelo ditado "A beleza está nos olhos de quem vê".


Podemos aplicar a palavra "beleza" ao código, e o significado óbvio é que o código é "esteticamente agradável".

Mas dizer então que "código bonito" tem um certo conjunto de atributos (como sugerido por outras Respostas) é uma contradição do significado óbvio de esteticamente agradável. A estética é sobre como as pessoas ... pessoas individuais ... percebem as coisas.

Ou, dito de outra maneira, há algo repugnante em alguém me dizendo o que eu deveria achar bonito, seja nas pessoas, obras de arte ou ... código.

Para mim, código bonito é um código que eu acho bonito, e é isso. É subjetivo e individual, e vamos deixar por isso mesmo.

Stephen C
fonte
2

Aqui está o meu conselho.

Veja as respostas para Como você pode explicar o "código bonito" para um não programador? e veja em quais características eles dizem focar. Depois, pegue um livro como o Code Complete e leia-o para obter conselhos sobre como escrever um código melhor.

Em algum momento, você verá um código antigo: "Isso é feio". Será uma reação estética direta. E olhando para ele, você perceberá que está visualizando seu código como um programador e pode ver a feiura porque sabe como deve ser a aparência do código.

btilly
fonte
1

Só porque você costuma ler sobre código bonito não significa que as pessoas que escrevem sobre ele têm a mesma definição. Infelizmente, a julgar pela sua pergunta, parece que eles nem se deram ao trabalho de defini-la.

Para mim, um código bonito é:

  • Expressivo
  • Conciso

O código conciso que não é expressivo pode ser enigmático e o código expressivo que não é conciso tende a ser inchado e tedioso de ler, portanto, você precisa de ambos.

Eu não incluiria a manutenção como parte do que torna o código bonito, porque a beleza é algo que você vê / lê, não algo em que você age. Mas, novamente, é a minha visão pessoal.

guillaume31
fonte
0

O termo código bonito é um termo muito vago e abstrato. É fácil descobrir o que representa e o que significa, mas nunca deve ser visto como mais do que um objetivo secundário.

Isso me lembra muito a métrica de cobertura de código. Quando você obtiver o número alto o suficiente, poderá relaxar e entrar em outra coisa. Ter uma base de código com cerca de 80% de cobertura é ótimo, não é à prova de balas, mas é suficiente para relaxar e fazer outras coisas. Ter 40% de cobertura é bastante assustador e deve incentivá-lo a aumentar esse número.

A questão é justamente que a cobertura do código só é realmente significativa se o número for baixo. Então não deixe que seja baixo. Quando a cobertura chegar a um certo ponto, passe para outra coisa.

Da mesma forma, um código bonito é ótimo. Se você tem um código bonito, ótimo, vá para outra coisa. Não se estresse demais com isso. Você nunca alcançará essa marca de 100% e, se o fizer, descobrirá que se concentrou demais no que parece, ou no que parece, e não o suficiente no que faz ou como faz. . Portanto, chegue a uma marca razoável e pare.

Mas se o seu código for impreciso, se for uma bagunça gigante complicada de código espaguete, se você precisar abrir o arquivo fisicamente, se você não tiver comentários ou documentação, etc, etc, etc, corrija-o. E faça o mais rápido possível.

Com o tempo, você descobrirá que sua base de código geralmente fica mais limpa, geralmente mais brilhante e geralmente mais bonita e, mais importante, mais utilizável quando se concentra em torná-la menos imprudente. Escrever código bonito não é um processo de uma etapa.

Não há filosofia mágica. Suas 1000 etapas menores, todas feitas juntas, todas servindo a um propósito concreto que não tem nada a ver com a aparência do código. Mas, quando você os serve juntos, eles formam um código bonito como a soma de suas partes. Como voltron. Ou capitão planeta.

astronauta
fonte
0

Concordo realmente com as respostas aqui, mas, adotando uma abordagem menos técnica, eu diria que um código bonito é uma expressão da clareza de pensamento de seus autores sobre o problema em questão que se manifesta por meio de uma linguagem bem formulada e precisa, porém simples.

Para mim, olhar através de códigos bonitos é como olhar para uma obra de arte, ver detalhes sempre novos que mostram a intenção do fabricante, mas também como as diferentes partes foram realizadas, cada uma dando uma resposta a tantas perguntas e, finalmente, como sua existência parece uma lei natural à qual tudo se alinha, de modo que só pode ser descrita com palavras de admiração: magnífica, inspiradora, bonita.

Portanto, nessa perspectiva, em sua carreira como programador, você pode fazer descobertas de códigos bonitos que outras pessoas nem entendem porque não têm conhecimento ou talvez não sejam mais dignas de nota, pois foram estragadas por muita beleza;)

Código bonito tem todas as qualidades pragmáticas mencionadas de outra forma, eu concordo totalmente.

Filou
fonte
0

Eu tenho três critérios:

  • Simples: pelo menos deve ser legível por humanos. Por exemplo, você pode escrever um código que funcione em O (1) para uma solução com toneladas de linhas, mas eu prefiro um código que funcione com 0 (n) resolva com poucas linhas. Isso pode mudar para situações extremas, mas para o começo a simplicidade é importante.
  • Reutilizável: o código deve ser reutilizável, mas não substituído. Se você precisar de uma operação, defina-a da maneira que poderá usá-la anos depois.
  • Recuo: Talvez isso não seja um problema para você, mas para o nível iniciante, é a primeira coisa a ser resolvida.
user2674653
fonte