Короткий, кращий і правильний відповідь
Ідея про те, що добре написаний "самодокументований код" - це все, що вам потрібно, - це антидіаграма і повинна померти, навіть коли вона робить винятки за коментарі, що пояснюють "чому". Це міф про те, що ви завжди можете написати весь код для будь-якого алгоритму, достатньо зрозумілий, щоб будь-який програміст зазирнув і зрозумів його (або що він не потребуватиме рефакторингу чи організаційного часу, якого у вас немає). Що ще важливіше, це часто не програмісти, які вважають, що вони пишуть чіткий код.
Значно краща відповідь, ніж коментарі, слід використовувати лише для пояснення "чому" , що коментарі повинні:
- поясніть "чому" (звичайно)
- поясніть "що" в окремих рядках лише тоді, коли код складний або мета незрозуміла і не може бути або не варто додатково спрощувати
- поясніть "що" для блоків коду для прискорення розуміння та пошуку того, що вам потрібно
Пояснення резервного копіювання
Люди помилково думають, що єдиною причиною використання коментарів є пояснення того, що означає рядок коду. Правда велика мета коментування коду - це зробити його швидшимпереглянути свій код і знайти те, що ви шукаєте. Коли я повертаюся до коду пізніше або читаю чужий код, то, звичайно, я можу прочитати і зрозуміти розділ добре написаного коду - але хіба не швидше і простіше читати коментар вгорі, кажучи, що робить цей розділ коду і пропустити його цілком, якщо це не те, що я шукаю? Навіщо сидіти там і взагалі розбирати код, навіть якщо це добре написано, якщо ви можете поглянути на пару коментарів і зрозуміти цілу функцію? Ось чому ми використовуємо описові назви для функцій - ніхто не каже, що мені не потрібно використовувати описову назву для своєї функції, оскільки хтось може просто переглядати мій чітко написаний код, щоб побачити, що він робить.
Наприклад, якщо я переглядаю чужу функцію, чи простіше пройти рядок за кодом, щоб побачити, що вона робить, або переглянути три добре написані коментарі по всій функції, щоб точно побачити, що функція виконує та де це робить?
Ще одна антидіаграма - це надмірне використання функцій для коментування коду. Добре названі функції є важливою частиною кодової документації, але іноді програмісти відокремлюють 2-3 рядки коду, які ніколи більше не використовуватимуться у функції для цілей документації. Чому надмірне використання функцій краще, ніж надмірне використання коментарів? Використання таких функцій - це те саме, що використання виразів GOTO - це створює код спагетті, який може зазнати біль.
По суті, коли ви працюєте в умовах корпоративного середовища, де люди постійно діляться кодом, і люди не завжди встигають зробити свій код ідеальним, кілька хороших коментарів можуть заощадити багато часу і розчарування. І пам’ятайте, хоча ви, можливо, є гуру, який може читати код на легкій швидкості, але, мабуть, не всі у вашому офісі є.