Рубріки: Новини

У Microsoft роз’яснили, як правильно писати коментарі в коді

Дмитро Сімагін

Представник команди Microsoft Windows Реймонд Чен пояснив, як правильно писати коментарі в коді. За його словами, коментарі всередині тіла функції повинні стосуватися стану системи в момент «виконання» коментаря. Про це Чен написав у блозі розробників Windows.

Автор допису розкритикував програмістів, які в коментарі до коду описують, які він буде працювати за певних обставин. За словами Чена, кожен коментар має описувати, що відбувається, коли виконання досягає блоку коду, в якому воно знаходиться. Якщо ж розробник хоче розмістити коментар перед оператором «if», то йому потрібно структурувати його відповідно до стану програми до оператора «if».

Для кращого пояснення Реймонд Чен наводить приклад невдалого розміщення коментарів:

// Widget is already vibrating, so we update the waveform in place.
// Else the waveform parameters will be set when we start vibrating.
if (waveformParameters != null) {
    waveformParameters.Shape = WaveformShape.Square;
    widget.UpdateWaveformParameters(waveformParameters);
}


Чен пише, що коли він побачив цей коментар, то зрозумів його так, ніби він свідчить про те, що віджет вже вібрує. «Я подумав: «Звідки мені знати, що він вібрує? Хіба нам не варто спочатку це перевірити?»

Потім, за його словами, він побачив частину коментаря else і ще більше заплутався, бо «навіщо ми говоримо про те, що ми робимо, якщо віджет не вібрує, якщо попереднє речення говорило нам, що ми (якимось чином) вже знаємо, що він вібрує?»

«Далі я бачу оператор if, і тепер він перевіряє, чи є щось null, що, я думаю, говорить нам, чи вібрує віджет. Але перше речення коментаря говорило, що ми знаємо, що він вібрує».

У підсумку Чен визнає, що коментар насправді описує те, що ми знаємо як правду, коли опинимося всередині блоку if. В якості альтернативи він пропонує менш заплутаний спосіб написання коментаря:

if (waveformParameters != null) {
    // Widget is already vibrating, so we update the waveform in place.
    waveformParameters.Shape = WaveformShape.Square;
    widget.UpdateWaveformParameters(waveformParameters);
} else {
    // Nothing to update right now. We will set the parameters
    // the next time we start vibrating.
}


Тут кожен коментар описує, що відбувається, коли виконання досягає блоку коду, в якому воно знаходиться. Автор навіть створив фіктивний блок else для зберігання пояснювального коментаря про те, чому нічого не робити – це нормально.

«Якщо ви дійсно хочете розмістити коментар перед оператором if, вам потрібно структурувати його відповідно до стану програми до оператора if.

// If the widget is already vibrating, then update the waveform in place.
// Else the waveform parameters will be set when we start vibrating.
if (waveformParameters != null) {
    waveformParameters.Shape = WaveformShape.Square;
    widget.UpdateWaveformParameters(waveformParameters);
}

 

Останні статті

Google запустила платформу Gemini Enterprise з інструментами для програмування

Google відкрила доступ до платформи Gemini Enterprise. На ній є готові ШІ-агенти для аналізу даних,…

10.10.2025

Copilot тепер може створювати документи Office та підключатись до сторонніх сервісів

Компанія Microsoft випустила оновлення програми Copilot для Windows. Нова версія 1.25095.161.0 підтримує Copilot Connections та…

10.10.2025

Microsoft випускає Edit CLI — новий інструмент командного рядка для Windows 11

Microsoft додає новий інструмент до оновлення Windows 11 версії 25H2, яке випустили минулого тижня. Мова…

10.10.2025

OpenAI наздоганяє Anthropic в якості коду: Codex має 74,3% успішності порівняно з 73,7% у Claude Code

Агентний інструмент генерації коду Codex від компанії OpenAI наздоганяє за певними можливостями аналогічний продукт Claude…

10.10.2025

OpenAI збирається перетворити ChatGPT на операційну систему

Компанія OpenAI має намір перетворити ChatGPT на повноцінну операційну систему з екосистемою додатків. Про це…

09.10.2025

В Україні створили Кіберсили ЗСУ, до яких залучатимуть цивільних фахівців

Верховна Рада проголосувала за законопроект №12349 про створення Кіберсил Збройних Сил України. Документ, який підтримали…

09.10.2025