C # комментирует закрытие {} - PullRequest
3 голосов
/ 27 ноября 2008

Я немного работал с DevExpress CodeRush и Refactor! Pro на этой неделе, и я выбрал плагин для комментариев, который будет автоматически генерировать комментарии при вводе кода.

Я не хочу вдаваться в подробности того, насколько хороша работа по выделению основного значения (на самом деле, довольно хорошо), но реализация по умолчанию действительно поднимает вопрос.

По умолчанию при вводе символа} для закрытия блока плагин добавляет комментарий, подобный следующему ...

using(MyType myType = new MyType())
{
    myType.doWork();
} // using

(т.е. добавление комментария к закрывающей скобке, где он был открыт.)

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

Мне было интересно, что думают другие люди; Не только с академической точки зрения, но если я получу большое количество негативных комментариев о них, я могу решить, нанести ли это моим коллегам или вычеркнуть их.

Ответы [ 13 ]

21 голосов
/ 27 ноября 2008

Я думаю, что подобные комментарии бесполезны, если, конечно, код ужасен. При правильном форматировании кода нетрудно увидеть, где начинается и где заканчивается блок, потому что обычно эти блоки имеют отступ.

Edit: Если процедура настолько велика, что неясно, какой блок кода закрывается фигурной скобкой, тогда уже должно быть больше описательных комментариев, описывающих процедуру в любом случае, и эти комментарии будут просто беспорядочными.

9 голосов
/ 27 ноября 2008

Я считаю идею плагина, который генерирует комментарии из кода, довольно бесполезной. Если оно может быть выведено машиной, то оно также может быть выведено любым, кто его читает. Комментарии, скорее всего, будут полностью излишними.

Мне кажется, что эти заключительные комментарии в скобках беспорядочные, они дают информацию, которая лучше предоставляется непосредственно IDE, если человек этого хочет.

4 голосов
/ 27 ноября 2008

Плохой стиль плохого комментария - он вносит накладные расходы в поддержку кодовой базы.

Я знал бывших VB-кодеров, которые находили следы } s в коде C-синтаксиса вводящими в заблуждение, но в этом сценарии реальное исправление заключается в рефакторинге вашего кода для предотвращения глубокого вложения и чрезмерно длинных функций и / или кодовые блоки.

4 голосов
/ 27 ноября 2008

IMO каждый комментарий, который описывает то, что код уже говорит вам, не нужен.

Если у вас действительно есть блоки кода, которые настолько длинны, что вам нужно много пролистывать, чтобы увидеть, что там в начале, вы сделали что-то не так и, возможно, рассмотрите возможность разделения кода.

3 голосов
/ 27 ноября 2008

Иногда вы получите очень большие блоки кода или множество вложенных блоков, закрывающихся вместе. Я иногда использую этот стиль в подобных случаях, но определенно не всегда. Я не ограничиваю его также и кодом: HTML может извлечь большую пользу из этого стиля «тщательного комментирования»:

<div id="content">
    <div id="columns">
        <div class="column">

            <!-- .. snip a lot of lines .. -->

        </div> <!-- .column -->
    </div> <!-- #columns -->
</div> <!-- #content -->
3 голосов
/ 27 ноября 2008

Может быть полезно, если блок using распространяется на страницу в IDE, но у вас есть другие проблемы, о которых нужно беспокоиться. В этом случае я получаю правильные отступы и IDE, которые выделяют соответствующую фигурную скобку, когда я выбираю одну.

Я даю ему в целом большие пальцы, но с потенциальным использованием, когда вы не можете избежать длинного блока в противном случае.

2 голосов
/ 28 ноября 2008

Мне всегда полезно помнить об этом ...

Ясный, хорошо написанный код предоставит достаточно объяснения , что код делает для компетентного программиста, чтобы поднять его.

Комментарии должны быть оставлены в коде, чтобы объяснить почему код делает это!

Другими словами, используйте комментарии, чтобы помочь читателю вашего кода понять алгоритм или то, что код должен достичь , а не как это достигает его!

Возможно, вы захотите проверить это сообщение Джефф Этвуд .

2 голосов
/ 27 ноября 2008

Я думаю, что более полезной, чем комментарии, была бы функция IDE, позволяющая не только выделять совпадающие пары фигурных скобок, но и отображать открывающую строку на всплывающей подсказке, так что если вы наведете курсор на закрывающую фигурную скобку в своем примере, она получит «использование (MyType myType = new MyType ())» во всплывающей подсказке.

Это позволит вам легко разобраться в сложных вложенных скобках для больших функций без постоянного визуального беспорядка.

2 голосов
/ 27 ноября 2008

Этот вид комментариев полезен только для очень длинных блоков кода, где у вас много вложенных блоков. Но это сказало, что это не должно иметь место во-первых, поскольку много вложенных блоков и длинных методов требуют рефакторинга. Так что мне это совсем не нравится, поскольку читатель, очевидно, может видеть, что это за блок кода.

1 голос
/ 27 ноября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...