1. Aulas de redação? Na verdade não.
Escrever código fonte é diferente o suficiente de escrever um livro.
Embora ambos busquem os mesmos objetivos: sendo o mais inequívoco possível e fáceis de entender, estão fazendo isso de uma maneira muito diferente, e as coisas que um escritor deve aprender não são as mesmas que um desenvolvedor de software deve aprender.
Exemplo 1: figuras de linguagem
As figuras de linguagem são valiosas ao escrever romances, poesias etc., pois aumentam a expressividade da escrita.
Qual foi a última vez que você viu um oxímoro ou litotes no código-fonte ? Ajudaria tê-los ou seria extremamente prejudicial para qualquer desenvolvedor que precisará manter esse código-fonte mais tarde?
Exemplo 2: vocabulário
Vocabulário rico é muito apreciado na literatura. O vocabulário de William Shakespeare, por exemplo, é de vinte mil a vinte e cinco mil palavras. Um vocabulário mais rico torna mais interessante a leitura de um romance ou poema.
Quando você escreve o código-fonte, espera que seja lido por pessoas que não falam inglês muito bem . Mostrar quão bem você conhece o inglês seria extremamente prejudicial para o seu código. Se você conhece uma palavra sofisticada que significa exatamente o que precisa, mas sabe que muitas pessoas não sabem o significado dessa palavra, deve encontrar um sinônimo menos expressivo ou um conjunto de palavras que expliquem o significado. Um vocabulário de alguns milhares de palavras geralmente é suficiente para um determinado projeto.
Observe um aspecto importante: embora o Google Translate possa ser de grande ajuda para um falante não-nativo, há dois problemas com qualquer tradutor:
Um par de idiomas não tem necessariamente uma correspondência de 1: 1 entre as palavras. Algumas palavras não têm tradução em outros idiomas, ou várias palavras podem se traduzir em uma única palavra em um idioma estrangeiro. Por exemplo, em russo, há uma quantidade enorme de palavras direcionadas a estados específicos de neve e clima frio, e traduzi-las em francês ou espanhol é geralmente impossível sem perder sua especificidade.
Às vezes, uma palavra tem vários significados e o significado é deduzido do contexto. O Google Translate, apesar de sua alta qualidade, geralmente não pode indicar o significado de nenhuma das situações mais básicas.
Exemplo 3: expressões
As expressões também tornam a prosa mais rica. Um autor espera que o leitor tenha uma certa quantidade de cultura geral e aproveita essa oportunidade para tornar o texto mais expressivo.
Da mesma forma que no exemplo anterior, essas expressões podem ser muito problemáticas quando lidas por pessoas que não são falantes nativos. Mas se o vocabulário geral geralmente pode ser traduzido, as expressões são muito mais problemáticas.
Por exemplo, o inglês não é meu primeiro idioma e, diariamente, encontro expressões, inclusive aqui no StackExchange, que não conheço. Eu tento adivinhar o significado deles, e às vezes estou certo. Mas às vezes eu estou errado, e pesquisar essas expressões no Google não ajuda.
Um usuário em seu comentário me lembrou um exemplo que me fez sofrer por um longo tempo quando comecei a programar: a agulha do PHP e palheiro . Eu não tinha conhecimento da figura correspondente do discurso, portanto, toda vez que estava lendo a documentação, fiquei pensando sobre o que é isso. Desnecessário dizer que os C # sequence.Contains(element)
ou os excelentes Python element in sequence
são uma alternativa muito melhor. Bem, pelo menos, os desenvolvedores que não sabem hebraico também tiveram que sofrer de PHP , mas essa é uma história diferente.
Exemplo 4: referências culturais
Referências culturais. Na literatura, é tentador incluir elementos de uma determinada cultura, e isso também torna o livro mais rico e, às vezes, mais interessante de ler.
No entanto, o código é endereçado a desenvolvedores de todo o mundo. Portanto, o que é uma referência óbvia para um desenvolvedor italiano pode não ser tão óbvio para um russo, e o que todo garoto ou garota indiana conhece pode não ser necessariamente conhecido por um programador americano.
O mesmo usuário que falou sobre a agulha e o palheiro também deu um excelente exemplo dessa referência cultural: o Graal. Quem não sabe o que é Graal? Bem, quero dizer, é "Graal" em francês, "Grial" em espanhol e ... "Kutsal Kâse" em turco, mas ainda assim. No entanto, quantos desenvolvedores americanos ou europeus conhecem a história medieval da China ou da Índia? Por que alguém presumiria que todo programador chinês e indiano precisa conhecer a referência do Santo Graal?
2. Lições para escrever código fonte expressivo? Certo.
Qualquer desenvolvedor deve aprender a escrever código fonte expressivo.
Qualquer desenvolvedor deve explicar por que o comentário está em:
int j = i + 1; // Creating i and adding 1 to it.
é ruim, mesmo aparte do fato de estar totalmente errado.
Qualquer desenvolvedor deve entender a refatoração básica e como isso ajuda a tornar o código fonte mais expressivo.
Qualquer desenvolvedor deve lembrar que 20% do tempo é gasto desenvolvendo código e 80% do tempo mantendo-o. Para alguns projetos, é mais como 5% - 95%.
etc.
Em essência, a programação está próxima da documentação técnica. Uma pessoa que escreve uma folha de especificações para um parafuso precisa ter aulas de redação? Na verdade não. O mesmo se aplica aos desenvolvedores. Qualquer pessoa deve escrever sem cometer erros de ortografia em todas as palavras, e qualquer pessoa deve poder comunicar suas idéias com clareza suficiente. Além disso, não tenho certeza de como as aulas de redação seriam mais úteis do que, digamos, um curso de ciência da computação ou segurança de TI ou qualquer outra coisa.
A expressividade do código fonte pode ser aprendida por outros meios. superM mencionou um deles em sua resposta : ler um bom código. Eu posso mencionar alguns outros:
Lendo livros como Beautiful Code ou Code Complete,
Solicitando que um desenvolvedor mais experiente revise seu código,
Compreender padrões e como e quando usá-los.