Sono un giovane programmatore (finito all'università informatica ma ancora al di sotto di un anno di lavoro nel settore) e di recente ho ottenuto un lavoro lavorando su qualche codice C per un servizio web di dimensioni discrete. Guardando il codice, gli unici posti in cui ho visto i commenti erano quando le persone stavano nascondendo il loro vecchio codice. I nomi delle funzioni e delle variabili sono per lo più informativi per la maggior parte del tempo - futex_up(&ws->g->conv_lock[conv->id%SPIN]);
. Confrontando un programmatore esperto sulla situazione e spiegando che aggiungere commenti e nomi significativi renderebbe il codice più gestibile e leggibile in futuro, ho ricevuto questa risposta:
In general, I hate comments. Most of them time, like the case you mention with the return value, people use comments to get around reading the code. The comments don't say anything other than what the guy thought the code does at the time he put in the comment (which is often prior to his last edit). If you put in comments, people won't read the code as much. Then bugs don't get caught, and people don't understand the quirks, bottlenecks, etc. of the system. That's provided the comments are actually updated with code changes, which is of course totally unguaranteed.
I want to force people to read the code. I hate debuggers for a similar reason. They are too convenient and allow you to step through dirty code with watches and breakpoints and find the so-called problem, when the real problem was that there are bugs in the code because the code has not been simplified enough. If we didn't have the debugger, we would refuse to read ugly code and say, I have to clean this up just so I can see what it is doing. By the time you are done cleaning up, half the time the bug just goes away.
Anche se ciò che ha scritto è molto contrario all'università, ha senso. Tuttavia, poiché l'esperienza negli studi a volte non funziona nella vita reale, mi piacerebbe avere un'opinione delle persone più controllate nel codice.
L'approccio di evitare codice di commento per far sì che le persone leggano effettivamente il codice e capire cosa sta succedendo ha senso in un ambiente di codifica di medie dimensioni (che può essere ragionevolmente letto nel suo complesso da ogni persona che ci lavora entro un mese o due), o è una ricetta per un disastro a lungo termine? Quali sono i vantaggi e gli svantaggi dell'approccio?