Comentários
- possível duplicata de Escrita / discussões sobre a estética do código?
- É ' apenas uma figura de linguagem. A beleza reside nos olhos de quem vê e, além disso, ' é tudo sobre a clareza das instruções que você ' estabeleceu em um arquivo de texto para resolver um problema e com que facilidade você ou qualquer outra pessoa pode modificá-lo e mantê-lo no futuro. Além disso, a quantidade de beleza que seu código exala depende inteiramente de você – recuos, estrutura modular, complexidade, eficiência simultaneamente com fácil legibilidade, convenções de nomenclatura, etc.
- Você pode estar interessado em ler Belo código: Principais programadores explicam como pensam então!
- possível duplicata de Como você pode explicar " belo código " para um não programador?
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
- para combater as questões levantadas, também há o conselho para c2.com/cgi/wiki?KillYourDarlings
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.