VGrabko
@VGrabko
Golang, Php, Js

Верить ли Макконнелу?

Читаю книгу Стив Маконелл совершенный код 2 издание. С лёту наткнулся на b48c6a513b3a49a2b76a2ac0c378a4d4.png
Он дело говорит или забить?
  • Вопрос задан
  • 263 просмотра
Решения вопроса 4
@cijiw
Речь о том, что ваш код должен быть понятен другому программисту с ходу, без скрежетания его мозга

Если ваш код нуждается в подробном комментировании - то это плохой код.
В больших коллективах при создании сложных проектов есть правило - пиши проще.
Сервер для многопользовательской игры?

Я работал с огромным проектом на PHP (один из полусотни разработчиков в компании), и не представляю его даже на экосистемах Python или Ruby. А писать такое на Node.js или Go - это просто самоубийство.
Кстати, запрещались любые оптимизации кода, которые шли во вред читаемости ;)


Пусть даже менее оптимизированнее, но проще, яснее, понятнее. Это в конечном итоге окупается, когда один программист помогает другому, когда один программист заменяет другого, когда один программист проверяет другого. В конце концов, даже тогда, когда один и тот же программист правит свой собственный код, но не выспался или устал или болеет или в плохом настроении.

Однако совсем без комментирования (например, экспорируемых/публичных элементов) тоже нельзя.

Имхо, нормальным является пояснение работы логики модуля для использования его со стороны (публичный интерфейс, публичное API). Внутри модуля нужно пояснять лишь изредка, лишь неочевидные моменты. Таких моментов должно быть минимум.

Форматирование обеспечивает привыкание глаза и легкость чтения. Поэтому в крупных конторах даже есть единые правила форматирования когда - когда все обязаны писать одинаково. Это поднимает производительность труда программистов при выполнении code review чужого кода и при поиске какой либо необходимой информации в чужом коде.

Это настолько важно, что в свежих языках (например, в Go) определенное форматирование кода является общеязыковым стандартом.
Ответ написан
Комментировать
maaGames
@maaGames
Погроммирую программы
Форматирование автоматически обеспечивается IDE. Комментирование в любом случае необходимо в той или иной степени.
Если при чтении кода+комментариев однозначно понятно что, зачем и как делается, то дополнительно шлифовать не нужно. А если не понятно, то нужно подробнее писать комментарий, переименовывать переменные. Может, вообще код переписать.
но это не ради абстрактного "совершенства", а чтобы не взорвался мозг при отладке.
Ответ написан
Комментировать
@abcd0x00
Он дело говорит или забить?

1)
Лучший комментарий - тот, без которого и так всё понятно.
В комментариях обычно описывается причина, по которой ты пишешь тот или иной фрагмент. Если ты собрался описывать то, как оно работает, то надо не комментарий писать, а код переписать так, чтобы комментарий вообще не нужен был (ниндзя-комментарий).

2)
Форматирование - это важная вещь до самых деталей. Есть автоматическое форматирование. Но какое бы оно ни было, ручное или автоматическое, точное и определённое форматирование нужно для того, чтобы сократить время чтения кода.
Подробности

Когда форматирования нет, ты сначала ищешь где что, потом у себя в голове раскладываешь это в правильно виде, а потом это рассматриваешь (в воображении). Так вот, голова не бесконечна, поэтому когда ты кладёшь форматирование в голову, то там места под более полезные вещи уже не хватает и размышлять о содержимом кода ты уже в полную силу не можешь. Тебе нужно думать про алгоритм, а ты думаешь "а правильно ли у меня там блок вложен? а в том ли блоке тот оператор получается?". И всё это только потому, что ты не можешь предоставить это экрану.
Ответ написан
Комментировать
@qazqazasda
Что до Go вы можете пропускать код код через линтеры - статические анализаторы кода.

https://github.com/alecthomas/gometalinter
Это набор из многих линтеров.
Они и подозрительные места в программе выделят, где возможные баги.

И подскажут, что где-то вы комментарии в публичных интерфейсах забыли.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы