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

Fechado . Esta pergunta é baseada em opiniões . Atualmente não está aceitando respostas.

Comentários

Resposta

“A beleza é comprada pelo julgamento do olho”.

Dito isso, acho que a maioria dos programadores concordará que um 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. O código transparente faz o que parece fazer. Se o código parece fazer uma coisa, mas na verdade faz outra (ou algo mais), ele não é transparente – é enganoso.

  • Elegância : há muitas maneiras de implementar a maioria dos algoritmos, mas algumas formas são desajeitadas, enquanto outras são simples e elegantes. A sucinta geralmente adiciona elegância, mas a sucinta 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 : sendo agradável aos olhos. Isso é bastante subjetivo. É principalmente uma questão de estilo. Uma consideração importante é ter um estilo consistente . Código que muda, por exemplo, estilo de recuo na metade do caminho, é feio.

Comentários

  • uma bela explicação, +1
  • Eu eliminaria " Eficiência ". Embora em sentido estrito seja positivo, incluí-lo na lista pode ser, na melhor das hipóteses, enganoso. Normalmente é um subproduto dos outros e deve ser uma preocupação secundária no momento da codificação. O principal motivo é que, na maior parte, ele só se manifesta depois que o compilador fez sua magia negra.
  • @Jubbat De fato – às vezes a solução mais eficiente leva a um código muito feio. (Por exemplo, a função Fast Inverse Square Root clássica)
  • @DarrelHoffman Certo, embora esse compromisso também seja verdadeiro por mais variáveis que definem um bom código, não apenas a eficiência e o resto (há uma boa explicação longa sobre isso em " Código completo " – infelizmente eu não ' não me lembro em qual seção do livro, provavelmente perto do início-)
  • @Jubbat: Concordo que a eficiência geralmente é uma preocupação secundária, mas ainda acho que isso influencia a equação da beleza.

Resposta

Não se deixe enganar pensando que um código bonito é o seguinte:

  • algoritmos inteligentes
  • recursos de linguagem sorrateiros
  • resolvendo um problema com o mínimo de toques 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 com o qual você deseja se estabelecer.

E você conhece aquele polimorfismo estático recursivo sofisticado que herda lambdas variáveis – ou o que quer que tenha lido online? Você pode estar ansioso para adotar truques inovadores e engenhosos sem um motivo claro para usá-los. Mas o código que ultrapassa os limites de uma linguagem também não é bonito.

Eles são sexy .
Muito divertido, mas pergunte a si mesmo: Será que eu realmente quero passar um tempo explorando a anatomia dessa linguagem, ou quero trabalhar junto com uma linguagem e construir algo bonito? Afinal, uma linguagem de programação é apenas a ferramenta para criar.


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

Belo código = código sustentável. ISSO “É!
ISSO” É A FÓRMULA !

Se você puder escrever algo, volte alguns meses depois e continue fazendo progresso nisso, então isso é ótimo. Se um ano depois você perceber que deseja adicionar funcionalidade também como ajustar um recurso existente, e você consegue fazê-lo com relativa facilidade, isso é lindo. Se outras pessoas puderem entrar em 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 bonitas.

Então, a verdadeira pergunta que você quer fazer é : “Como escrevo um código mais sustentável?”. Receio que seja uma questão 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.

Comentários

Resposta

Minha opinião sobre isso é que “Beautiful Code” não é um termo objetivo ou particularmente útil. E não devemos tentar defini-lo.


As definições típicas do dicionário da palavra “beleza” em inglês são assim:

  • “1. a combinação de todos as qualidades de uma pessoa ou coisa que encantam os sentidos e agradam a mente “
  • ” 1. a qualidade presente em uma pessoa ou coisa que dá 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 fio condutor é que “beleza” é sobre o que é esteticamente agradável. Isso é necessariamente subjetivo … conforme 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 que “código bonito” tem um certo conjunto de atributos (como sugerido por outras respostas) é uma contradição do óbvio significado de esteticamente agradável. A estética é sobre como as pessoas … pessoas individuais … percebem as coisas.

Ou, para colocar de outra forma, há algo repugnante em alguém me dizer o que eu acho que é bonito, seja em pessoas, obras de arte ou … código.

Até agora no que me diz respeito, código bonito é código que considero bonito, e é isso. É subjetivo e individual, e vamos deixar por isso mesmo.

Resposta

Aqui está meu conselho.

Olhe as respostas para Como você pode explicar " código bonito " para um não programador? e veja quais características eles dizem para se concentrar. Em seguida, pegue um livro como Código completo e leia-o para aprender conselhos sobre como escrever um código melhor.

Em algum momento você perceberá que está olhando para um código mais antigo seu , “Isso é feio.” Será uma reação estética direta. E olhando para ele, você vai perceber que está vendo seu código como um programador e pode ver a feiura porque sabe como um código mais bonito deve ser.

Resposta

Só porque você costuma ler sobre códigos bonitos, não significa que as pessoas que escrevem sobre eles têm a mesma definição. Infelizmente, a julgar por sua pergunta, não parece que eles se importaram em defina-o em primeiro lugar.

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, então você precisa de ambos.

Eu não incluiria a manutenibilidade como parte do que torna o código bela, porque a beleza é algo que você vê / lê, não algo sobre o qual você age. Mas, novamente, é minha opinião pessoal.

Resposta

O termo código bonito é muito vago e abstrato. É fácil descobrir o que ele 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ê atinge o número alto o suficiente, pode relaxar e ir para outra coisa. Ter uma base de código com cerca de 80% de cobertura é ótimo, não à prova de balas, mas o suficiente para relaxar e fazer outras coisas. Ter uma cobertura de 40% é bastante assustador e deve encorajá-lo a aumentar esse número.

O ponto é que a cobertura de código só é realmente significativa se o número for baixo. Portanto, não deixe que seja baixo. Quando a cobertura aumentar até certo ponto, passe para outra coisa.

Um código igualmente bonito é ótimo. Se você tem um código bonito, ótimo, vá para outra coisa. Não se estresse muito sobre isso. Você nunca atingirá a marca de 100% e, se o fizer, verá que se concentrou muito no que parece ou na aparência, e não o suficiente em o que faz, ou como faz. Portanto, chegue a um ponto razoável e pare.

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

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

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

Resposta

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

Para mim, examinar um código bonito é como olhar para uma obra de arte, ver detalhes sempre novos que mostram os intenção, mas também como as diferentes partes foram realizadas, cada uma respondendo a tantas perguntas, e então, finalmente, como sua existência parece uma lei natural à qual tudo se alinha de tal forma que só pode ser descrito com palavras de espanto: magnífico , inspirador, bonito.

Então, dessa perspectiva, em sua carreira como programador, você pode fazer descobertas de códigos bonitos que os outros podem nem entender porque não têm o conhecimento ou podem não achar mais dignos de nota, pois foram estragados por muita beleza;)

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

Resposta

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 em situações extremas, mas para o início a simplicidade é importante.
  • Reutilizável: O código deve ser reutilizável, mas não sobrescrito. Se você precisar de uma operação, deve defini-la 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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *