Цікаво, що читабельність , застосована до природної мови, вимірюється швидкістю читання та розуміння. Я думаю, що може бути прийнято просте правило, якщо конкретний коментар до коду не покращить цю властивість, цього можна уникнути .
Чому коментарі?
Хоча коментар до коду є формою вбудованої документації, в мовах програмування високого класу існує кілька способів уникнути зайвого "задокументованого" програмування (змістовного коду), використовуючи елементи самої мови. Це також погана ідея перетворити код у списки з підручника з програмування, де окремі висловлювання буквально пояснюються майже тавтологічно (майте на увазі приклад "/ * збільшення i на 1 * /" у вже наданих відповідях), роблячи такі коментарі релевантними лише програмістам, які не знають мови.
Тим не менш, це намір спробувати прокоментувати "недодокументований" (але безглуздий) код, який справді є "джерелом усього зла". Саме існування "недодокументованого" коду є поганим сигналом - або це неструктурований безлад, або хитрий злом містичної втраченої мети. Очевидно, що значення такого коду є принаймні сумнівним. На жаль, завжди є приклади, коли дійсно краще ввести коментар до розділу (візуально згрупованих) відформатованих рядків коду, ніж загортати його в нову підпрограму (майте на увазі "нерозумну послідовність", яка "є хобгобліном маленьких розумів") .
Читання коду! = Коментарі до коду
Читальний код не потребує анотацій у коментарях. У кожному конкретному місці коду завжди присутній контекст завдання, якого повинен досягти цей конкретний код. Якщо відсутня мета та / або код робить щось загадкове = уникайте його будь-якою ціною. Не дозволяйте дивним хакам заповнювати свій код - це прямий результат поєднання баггі-технологій з відсутністю часу / інтересу для розуміння основ. Уникайте містичного коду у своєму проекті!
З іншого боку, програма "Читаема програма = код + документація" може містити кілька законних розділів коментарів, наприклад, для полегшення створення "коментарів до API" документації.
Дотримуйтесь стандартів стилю коду
Досить смішно питання не в тому, чому коментувати код, а в командній роботі - як створити код у високо синхронізованому стилі (щоб усі інші могли читати / розуміти). Ви дотримуєтесь будь-яких стандартів стилю коду у вашій компанії? Основна мета - уникати написання коду, який вимагає рефакторингу, занадто "особистого" та "суб'єктивно" неоднозначного. Тож я думаю, якщо вбачається необхідність у використанні стилю коду, є цілий серйозний інструмент, як правильно його реалізувати - починаючи з навчання людей і закінчуючи автоматизацією для контролю якості коду (численні підказки тощо) та (перегляд системи інтегрованого контролю) системи перегляду коду.
Стати євангелістом з читабельності коду
Якщо ви згодні, код читається частіше, ніж написано. Якщо чітке висловлення ідей і мислення чітко для вас важливо, незалежно від того, якою мовою ви користуєтесь для спілкування (математика, машинний код або староанглійська мова) .. Якщо ваша місія полягає у викоріненні тупого та потворного способу альтернативного мислення .. (вибачте , останній з іншого "маніфесту") .. задайте питання, ініціюйте дискусії, почніть розповсюджувати думки, що провокують книги про очищення коду (напевно, не лише щось подібне до моделей дизайну Бека, але більше схоже на вже згадуване RC Martin ), які стосуються неоднозначності. в програмуванні. Далі йде чіткий уривок ключових ідей (цитується з книги O'Reilly про читабельність)
- Спростіть іменування, коментування та форматування за допомогою порад, які стосуються кожного рядка коду
- Уточнити петлі, логіку та змінні програми, щоб зменшити складність та плутанину
- Проблеми атаки на рівні функцій, такі як реорганізація блоків коду для виконання однієї задачі
- Напишіть ефективний тестовий код, який є ретельним і стислим, а також читабельним
Вирізаючи «коментування», все ще залишається багато (я думаю, написання коду, який не потребує коментарів, - це одна чудова вправа!). Називання семантично значущих ідентифікаторів - хороший початок. Далі - структурування коду шляхом групування логічно пов'язаних операцій у функції та класи. І так далі. Кращий програміст - кращий письменник (звичайно, якщо брати до уваги інші технічні навички).