Uma linguagem que não permite comentários produz um código mais legível? [fechadas]

14

Apenas por curiosidade, comecei a me perguntar se uma linguagem que não permite comentários renderia código mais legível, pois você seria forçado a escrever código de auto-comentário.

Então, novamente, você poderia escrever um código tão ruim quanto antes porque você simplesmente não se importa. Mas qual a sua opinião?

    
por gablin 11.01.2011 / 16:46
fonte

16 respostas

61

Acho que os programadores descobririam outra maneira de adicionar comentários ...

string aComment = "This is a kludge.";
    
por 11.01.2011 / 16:41
fonte
45

Eu não acho tão simples assim:

mesmo em um código bem documentado e autodocumentado, há situações legítimas em que você deve escrever comentários.

    
por 11.01.2011 / 16:53
fonte
14

Suponha que você seja um programador perfeito (o que você não é, mas vamos supor) ...

Há muitos efeitos não óbvios que podem acontecer no código quando você está interagindo com coisas que você não escreveu. Por exemplo, pode haver falhas de design na biblioteca de outra pessoa ou (se você for um desenvolvedor do kernel) no hardware de outra pessoa. Ter comentários para explicar por que você usou um determinado kludge em um determinado lugar pode ser essencial para entender o código e garantir que o kludge não seja removido (quebrar as coisas).

    
por 11.01.2011 / 16:53
fonte
11

É difícil para mim entender a ideia de que a remoção de opções de uma linguagem de alguma forma tornaria os programas escritos na linguagem melhor. Comentários não são obrigatórios, e escrever código de auto-documentação não é tão bom.

Não há substituto para boas práticas de desenvolvimento.

    
por 11.01.2011 / 16:40
fonte
6

Em teoria, o COBOL foi originalmente projetado de tal forma que se pretendia ser auto-documentado o suficiente para que mesmo desenvolvedores (ou seja, supervisores) poderiam revisar o código que estava escrito e determinar o que estava acontecendo. No entanto, na prática, como um programa se torna mais complexo, é difícil entender tudo o que está acontecendo somente através do código.

Embora a remoção de comentários possa forçar alguns desenvolvedores a escrever um código melhor na auto-documentação, ainda existem desenvolvedores que gravam código mal documentado (isto é, nomes de variáveis a , b , c , etc) e são esses hábitos que as pessoas precisam ser treinadas. Nesses casos, a remoção de comentários não afetaria esses desenvolvedores e poderia atrapalhar os esforços de outros desenvolvedores para explicar partes complexas do código.

    
por 11.01.2011 / 16:52
fonte
3

Todo programa é escrito para implementar requisitos funcionais que estão fora do programa, sejam escritos ou apenas na cabeça de alguém.

Acho que a função mais essencial dos comentários é estabelecer um mapeamento entre os requisitos e o código. A razão pela qual o mapeamento é necessário é permitir mudanças incrementais. Quando ocorre uma alteração nos requisitos, é necessário fazer alterações correspondentes no código, se o código continuar a ser uma solução para os requisitos. Os comentários servem como um roteiro para as mudanças.

Se a linguagem é uma linguagem de domínio específico ideal (DSL) perfeitamente adaptada ao problema a ser resolvido, então o mapeamento deve ser um isomorfismo simples, e os comentários não seriam necessários. O código-fonte simplesmente declararia o problema e nada mais precisaria ser dito. A solução do problema seria enterrada na implementação da linguagem.

Como os idiomas em que trabalhamos não são como DSLs e continuarão assim por algum tempo, ainda precisamos de comentários . É uma questão de grau. Às vezes, o problema é uma boa correspondência para o idioma em questão, mas geralmente não.

Consulte também ...

    
por 12.04.2017 / 09:31
fonte
2

Eu trabalho em algum lugar que não permite comentários embutidos (ou seja, você só pode ter comentários no topo das funções). Não, isso não torna o código mais fácil de ler. Isso torna as ordens de magnitude piores.

    
por 11.01.2011 / 20:40
fonte
2

Evito comentar código e funciona.

Evito todos os comentários internos (inline ou stream) em favor de docblock + varables significativos + < uma programação espartana , e funciona.

E sim, eu sei que docblocks são tecnicamente comentários, ainda assim, eles são realmente complementares ao código, não intrusivos e "padronizados" ... tudo o que um comentário comum não é.

O que eu acho que poderia funcionar como um substituto dos comentários: uma linguagem / sintaxe / idiomática padronizada de documento, algo como anotações em java.

    
por 11.01.2011 / 21:25
fonte
2

Não só não afetaria a qualidade, como outros já observaram, como seria realmente irritante.

Tenho certeza que a maioria de nós fez algo assim de tempos em tempos:

foreach ( myObject obj in SomeList )
 {
    Debug.Writeline( obj.Name );
//  for some reason this isn't working
//  obj.SetArielPotency( setting );
//  obj.DoSomeProcess();       
 }

Quão irritante seria se você não pudesse comentar algumas linhas de código para descobrir de onde esse bug está vindo?

Independente dos comentários sobre como o código funciona, coisas práticas simples como essa ou descartar uma conveniente nota TODO são coisas que facilitam a correção de pequenos problemas e lembram o que estávamos fazendo quando começamos a escrever o código.

    
por 12.01.2011 / 00:16
fonte
1

Os comentários são como um resumo do livro. Claro, você pode entender tudo lendo código, mas por que você quer ler uma página inteira quando ela pode ser resumida em uma linha comentada?

    
por 11.01.2011 / 17:11
fonte
1

Embora eu concorde com as outras respostas de que até o código de auto-documentação precisa de comentários, isso é relevante apenas para os idiomas atuais .

Eu acho que a verdadeira questão é, "É possível projetar uma nova linguagem de programação que não precise comentários?" Ela precisaria ter um nível bem alto com muita abstração. Cada declaração e função seria forçada a ser legível através da sintaxe da linguagem.

    
por 11.01.2011 / 18:52
fonte
1

Programadores indisciplinados escreverão códigos ruins, não importando o idioma.

Intrigando que python, que apenas tem private por convenção (_-prefix), não faz algum esforço para policiar isso, e muito mais código ainda está sendo escrito.

Rant: Às vezes eu acho que as langugages mais permissivas forçariam mais pessoas a aprender a codificar apropriadamente, ao invés do reverso (ou seja, o Java é unidirecional e maldito seja se você quiser pensar em funções como objetos de primeira classe).

    
por 12.01.2011 / 00:00
fonte
1

Eu vou adivinhar: provavelmente não. Por quê? Porque você teria que codificar "por que" como um formalismo na linguagem e porque "por que", seja codificado em linguagem ou comentário-em-linguagem, é subutilizado pelos programadores de qualquer maneira.

    
por 12.01.2011 / 05:34
fonte
1

O código pode certamente ser auto-comentante ao explicar o que está fazendo, mas nem sempre é possível que o código explique por que ele está fazendo isso. É aí que os comentários são mais necessários.

Se, por exemplo, uma seção de código for necessária para cumprir um regulamento específico, como você explica isso sem um comentário? Se o algoritmo usado por uma parte específica do código é descrito em um artigo escrito em 1998 por M. Matsumoto e T. Nishimura, como você explica isso sem um comentário? Se um algoritmo não fornece exatamente a funcionalidade ideal, mas faz um comprometimento justificado muito específico que pode causar problemas futuros se outro código for alterado, como você explica isso sem um comentário?

E se uma seção do código fosse auditada por um auditor independente, de modo que não possa ser modificada sem invalidar essa auditoria e o código for usado para criar um produto cuja conformidade com essa auditoria seja exigida por seus clientes. Como você indica isso sem um comentário?

    
por 14.09.2011 / 11:56
fonte
0

Sempre achei que seria bom ter um comentário de uma só palavra, de modo que, se você prefixasse uma palavra com um símbolo (digamos, dois pontos), essa palavra seria ignorada. Dessa forma, você poderia dizer um lisp que só permitia comentários de uma palavra dentro de uma expressão-s. Por exemplo, você pode transformar isso:

(if (= x y)
    x
    y)

... para isso:

(if (= x y)
    :then x
    :else y)

Se for absolutamente necessário, você pode encadear vários comentários de uma só palavra para formar um comentário in-line:

(if x :Remember, :x :could :be :nil!
    ...)

Claro, isso é uma dor para digitar. Na verdade, esse é o ponto. Ele incentiva você a usar comentários in-line com parcimônia e mantê-los curtos e diretos. Mas tenho a sensação de que teria dificuldade em convencer alguém a usar o idioma.

    
por 12.01.2011 / 02:02
fonte
0

Isso é duplo ou nada. Alguns programadores não fazem nada para tornar o código legível. Não permitir comentários irá reforçar isso. Alguns programadores escrevem bons comentários, mesmo que sejam ainda melhores se forem refatoração de código em vez de comentários - a remoção de comentários pode forçá-los a refatorar melhor.

Razões pelas quais esta é uma boa ideia:  - Nenhum

Razões porque esta é uma má ideia:  - Há muitos programadores mais atrozes do que programadores bons, mas não ótimos  - Quase sempre deve haver alguns comentários para estranhas pegadinhas, resumos, etc.  - Mesmo que você evite comentários, você provavelmente usará comentários como um estágio no caminho: faça um comentário quando estiver escrevendo algo, e depois volte e refatore-o. Mas você não pode sempre fazer isso imediatamente porque você ainda está aprendendo.  - Ele irá incentivar as pessoas a trabalhar em volta dele  - Quem usaria isso? Pessoas que escrevem código ilegível e querem uma desculpa (ruim) e pessoas que já estão enamoradas da ideia (que podem apenas "não escrever comentários" para começar). Se é isso que você quer, basta escrever um padrão de codificação mostrando como você deseja que as pessoas o façam.

Razões em que isso pode ser relevante  - Onde poderia ser útil é como parte de um sistema para fazer "não comentar" melhor, por exemplo. uma linguagem ou IDE que tenha um bom suporte para algo melhor que comentários e como parte de seu discurso, evita comentários. Eu não sei como isso funcionaria, mas é um bom ponto pelo qual vale a pena pensar.

    
por 08.06.2011 / 12:29
fonte

Tags