Nah. No code actually documents itself. Ever. Anyone who says they can is an idiot that doesn’t understand the purpose of comments and docs.
Code can never describe intent, context, or consequences unless you read every line of code in every library and framework used, and every external call. Especially if they aren’t doing “fail fast” correctly.
My favorite thing about the “all comments are bad” crowd is that their first example is almost always something like this:
// Add 1 to x
x = x + 1
Like, nobody that thinks comments are good and important would ever add a useless comment like that. The point of commenting is to add documentation (usually the only form of documentation that a future developer is ever going to read) only to code that would otherwise be inscrutable.
You’d think that, and yet I’ve once worked in a project in a fortune 500 company that basically wouldn’t even compile if we didn’t add comments like that.
No kidding the compiler enforced specific comment patterns so if you had a line do x = x + 1, it would not compile if it was not preceded by a comment that started with “Add” and included “1” and “to x”. Even in dev mode if you wanted to just try something you had to comment everything.
The original dev was super proud of this tools that generated HTML documentation about everything based on those comments. And the whole documentation was stuff like:
Nah. No code actually documents itself. Ever. Anyone who says they can is an idiot that doesn’t understand the purpose of comments and docs.
Code can never describe intent, context, or consequences unless you read every line of code in every library and framework used, and every external call. Especially if they aren’t doing “fail fast” correctly.
// Prints "Hello World!" to the screen printf("Hello World!");I did not say comments should directly explain what the code is obviously attempting to do.
My favorite thing about the “all comments are bad” crowd is that their first example is almost always something like this:
// Add 1 to x x = x + 1Like, nobody that thinks comments are good and important would ever add a useless comment like that. The point of commenting is to add documentation (usually the only form of documentation that a future developer is ever going to read) only to code that would otherwise be inscrutable.
You’d think that, and yet I’ve once worked in a project in a fortune 500 company that basically wouldn’t even compile if we didn’t add comments like that. No kidding the compiler enforced specific comment patterns so if you had a line do
x = x + 1, it would not compile if it was not preceded by a comment that started with “Add” and included “1” and “to x”. Even in dev mode if you wanted to just try something you had to comment everything.The original dev was super proud of this tools that generated HTML documentation about everything based on those comments. And the whole documentation was stuff like:
*price*: The priceEvery good idea can be taken to a ridiculous extreme.
and that… is ridiculous.