1. Écrire des leçons? Pas vraiment.
L'écriture du code source est suffisamment différente de l'écriture d'un livre.
Alors que les deux poursuivent les mêmes objectifs: être aussi clairs que possible et faciles à comprendre, ils le font d'une manière très différente, et les choses qu'un écrivain devrait apprendre ne sont pas les mêmes que celles qu'un développeur de logiciels devrait apprendre.
Exemple 1: figures de style
Les figures de style sont précieuses lors de l'écriture de romans, de poésie, etc., car elles augmentent l'expressivité de l'écriture.
Quelle est la dernière fois que vous avez vu un oxymore ou des litotes dans le code source ? Serait-il utile de les avoir, ou serait-il plutôt extrêmement nocif pour tout développeur qui devra conserver ce code source plus tard?
Exemple 2: vocabulaire
Un vocabulaire riche est très apprécié dans la littérature. Le vocabulaire de William Shakespeare, par exemple, est de vingt mille à vingt-cinq mille mots. Un vocabulaire plus riche rend la lecture d'un roman ou d'un poème plus intéressante.
Lorsque vous écrivez du code source, vous vous attendez à ce qu'il soit lu par des personnes qui ne parlent pas très bien anglais . Montrer à quel point vous savez que l'anglais serait extrêmement dangereux pour votre code. Si vous connaissez un mot de fantaisie qui signifie exactement ce dont vous avez besoin mais que vous savez que beaucoup de gens ne connaissent pas le sens de ce mot, vous devriez plutôt trouver un synonyme moins expressif ou un ensemble de mots qui expliquent le sens. Un vocabulaire de quelques milliers de mots est souvent largement suffisant pour un projet donné.
Notez un aspect important: bien que Google Translate puisse être d'une grande aide pour un locuteur non natif, il y a deux problèmes avec n'importe quel traducteur:
Une paire de langues n'a pas nécessairement une correspondance 1: 1 entre les mots. Certains mots n'ont pas de traduction dans d'autres langues ou plusieurs mots peuvent se traduire en un seul mot dans une langue étrangère. Par exemple, en russe, il y a une énorme quantité de mots qui ciblent des états spécifiques de neige et de temps froid, et leur traduction en français ou en espagnol est généralement impossible sans perdre leur spécificité.
Un mot a parfois plusieurs sens, et le sens est déduit du contexte. Google Translate, malgré sa haute qualité, n'est généralement pas en mesure d'indiquer la signification de toutes les situations, sauf les plus élémentaires.
Exemple 3: expressions
Les expressions enrichissent également la prose. Un auteur s'attend à ce qu'un lecteur ait une quantité donnée de culture générale et utilise cette opportunité pour rendre le texte plus expressif.
De même que dans l'exemple précédent, de telles expressions peuvent être très problématiques lorsqu'elles sont lues par des personnes qui ne sont pas de langue maternelle. Mais si le vocabulaire général peut généralement être traduit, les expressions sont beaucoup plus problématiques.
Par exemple, l'anglais n'est pas ma langue maternelle, et au quotidien, je rencontre des expressions, y compris ici sur StackExchange, que je ne connais pas. J'essaie de deviner leur signification, et parfois j'ai raison. Mais parfois, je me trompe, et googler ces expressions n'aide pas.
Un utilisateur dans son commentaire m'a rappelé un exemple qui m'a fait souffrir longtemps quand je viens de commencer la programmation: l' aiguille et la botte de foin de PHP . Je n'étais pas au courant de la figure de style correspondante, donc à chaque fois que je lisais la documentation, je me demandais de quoi il s'agissait. Inutile de dire que les C # sequence.Contains(element)
ou les excellents Python element in sequence
sont une bien meilleure alternative. Eh bien, au moins, les développeurs qui ne connaissent pas l'hébreu devaient également souffrir de PHP , mais c'est une autre histoire.
Exemple 4: références culturelles
Références culturelles. En littérature, il est tentant d'inclure des éléments d'une culture donnée, et cela aussi rend le livre plus riche et parfois plus intéressant à lire.
Cependant, le code s'adresse aux développeurs du monde entier. Par conséquent, ce qui est une référence évidente pour un développeur italien peut ne pas être aussi évident pour un développeur russe, et ce que tout garçon ou fille indien sait ne peut pas nécessairement être connu par un programmeur américain.
Le même utilisateur qui a parlé de l'aiguille et de la botte de foin a également donné un excellent exemple d'une telle référence culturelle: le Graal. Qui ne sait pas ce qu'est le Graal? Enfin, je veux dire, c'est "Graal" en français, "Grial" en espagnol et ... "Kutsal Kâse" en turc, mais quand même. Cependant, combien de développeurs américains ou européens connaissent l'histoire médiévale de la Chine ou de l'Inde? Pourquoi est-ce que quelqu'un supposerait que chaque programmeur chinois et indien doit connaître la référence Holy Graal?
2. Des leçons pour écrire du code source expressif? Sûr.
Tout développeur doit apprendre à écrire du code source expressif.
Tout développeur doit expliquer pourquoi le commentaire dans:
int j = i + 1; // Creating i and adding 1 to it.
est mauvais, même à part le fait que c'est totalement faux.
Tout développeur doit être capable de comprendre le refactoring de base et comment il aide à rendre le code source plus expressif.
Tout développeur doit se rappeler que 20% du temps est consacré au développement du code et 80% du temps à le maintenir. Pour certains projets, cela ressemble plus à 5% - 95%.
etc.
En substance, la programmation est proche de la documentation technique. Une personne qui écrit une fiche technique pour un boulon doit-elle prendre des leçons d'écriture? Pas vraiment. Il en va de même pour les développeurs. N'importe qui devrait écrire sans faire de fautes d'orthographe dans chaque mot, et n'importe qui devrait être capable de communiquer ses idées suffisamment clairement. En dehors de cela, je ne sais pas comment la rédaction de leçons serait plus utile que, disons, un cours d'informatique ou de sécurité informatique ou autre.
L'expressivité du code source peut être apprise par d'autres moyens. superM en a mentionné un dans sa réponse : lire un bon code. Je peux en mentionner quelques autres:
Lire des livres comme Beautiful Code ou Code Complete,
Demander à un développeur plus expérimenté d'examiner votre code,
Comprendre les modèles et comment et quand les utiliser.