Это в порядке для помещения комментариев об исправлениях ошибок в исходном коде?

Для.NET 2.0 Вы могли реализовать класс, который наследовался от Dictionary и реализует ICloneable.

public class CloneableDictionary<TKey, TValue> : Dictionary<TKey, TValue> where TValue : ICloneable
{
    public IDictionary<TKey, TValue> Clone()
    {
        CloneableDictionary<TKey, TValue> clone = new CloneableDictionary<TKey, TValue>();

        foreach (KeyValuePair<TKey, TValue> pair in this)
        {
            clone.Add(pair.Key, (TValue)pair.Value.Clone());
        }

        return clone;
    }
}

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

9
задан esac 9 December 2009 в 22:59
поделиться

14 ответов

Комментарии должны объяснить, как работают методы.

Система контроля версий объясняет, почему были внесены изменения.

32
ответ дан 4 December 2019 в 05:51
поделиться

Добавление комментария об исправлении ошибок - хорошая идея, если вы пишете правильно.

Например,

/* I know this looks wrong, but originally foo was being decremented here, and 
   it caused the baz to sproing. Remember, the logic is negated by blort! */

Наподобие Исправляет ошибку №22 лучше хранить в системе контроля версий. Комментарии в вашем коде должны быть указателями, чтобы помочь будущим путешественникам на их пути, а не удовлетворять процесс и отслеживание.

23
ответ дан 4 December 2019 в 05:51
поделиться

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

Моя причина в том, что это ремонтопригодность - 2 (или 10) лет спустя этот комментарий не будет больше иметь смысл. В приведенном выше примере я бы предпочел что-то вроде:

// Increment i to counteract extra decrement
++i;

Разница в том, что это не связано с ошибкой , а скорее с тем, что делает код. Комментарии должны комментировать код, а не метаинформацию, ИМО.

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

6
ответ дан 4 December 2019 в 05:51
поделиться

Нет. Вы должны хранить информацию об ошибках и наборе изменений, которые исправляют ошибку вне исходного кода. Любые комментарии в самом коде должны относиться только к тому, что делает код. Все остальное - просто беспорядок.

6
ответ дан 4 December 2019 в 05:51
поделиться

У нас было несколько подобных комментариев, но затем наш сервер Bugzilla умер, и мы перезапустились с ошибкой №1, поэтому все они бессмысленны. Сейчас я предпочитаю краткое объяснение ошибки.

4
ответ дан 4 December 2019 в 05:51
поделиться

Что-то вроде // исправляет ошибку №22 само по себе совершенно бессмысленно и требует дополнительных шагов, чтобы даже понять, что он означает и какую роль выполняет. Краткое описание, на мой взгляд, более уместно, независимо от того, какое программное обеспечение для отслеживания ошибок или контроля версий вы используете.

2
ответ дан 4 December 2019 в 05:51
поделиться

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

Если это связано с добавлением комментария при исправлении исходной ошибки, сделайте это.

Он также будет служить маркером, чтобы вы можете найти код, который вам нужен, чтобы проверить, когда вы когда-нибудь обновитесь до следующей версии API.

1
ответ дан 4 December 2019 в 05:51
поделиться

Я полагаюсь на FogBugz и проверяю комментарии в svn. Работает отлично, хотя, как сказал Джеффамафон, номера случаев не имеют большого смысла, если вы потеряете свою базу данных об ошибках.

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

0
ответ дан 4 December 2019 в 05:51
поделиться

Предполагая, что комментарии не лишние (классический i ++; // инкремент i ), почти никогда не бывает причин возражать против добавления комментария, независимо от того, с чем он связан. Информация полезная. Однако лучше быть описательным и кратким - не говорите «исправляет ошибку №YY», но вместо этого добавьте что-то вроде «это использовалось для сбоя при x = 0, дополнительная логика здесь предотвращает это». Таким образом, кто-то, кто посмотрит код позже, сможет понять, почему конкретный раздел важен для правильного функционирования.

0
ответ дан 4 December 2019 в 05:51
поделиться

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

Комментарии не должны окружать временное исправление.

0
ответ дан 4 December 2019 в 05:51
поделиться

I согласны с тем, что такие данные должны быть помещены в систему контроля версий или другую часть Управления конфигурациями. Поработав с кодовыми базами, которые помещают информацию об исправлениях ошибок в комментарии, я могу сказать, что позже это приводит к очень загроможденным комментариям и коду. Через шесть месяцев после установки исправления вы действительно хотите знать это о строке, исправляющей какую-то давно прошедшую ошибку? Что вы делаете с комментариями, когда вам нужно реорганизовать код?

0
ответ дан 4 December 2019 в 05:51
поделиться

Мы используем Team Foundation Server для управления версиями здесь, в моей компании, и он позволяет вам связать регистрацию с отчетом об ошибке, поэтому я не буду помещать комментарий непосредственно в код для сервера та же цель.

Однако , в ситуациях, когда я использую код в качестве обходного пути для ошибки в платформе .NET или сторонней библиотеке, мне нравится помещать URL-адрес в журнал или веб-сайт Microsoft TechNet с описанием ошибки и ее статуса.

0
ответ дан 4 December 2019 в 05:51
поделиться

In the Perl5 source repository it is common to refer to bugs, with their associated Trac number in Test files.

This makes more sense to me, because adding a test for a bug will prevent that bug from ever going unnoticed again.

0
ответ дан 4 December 2019 в 05:51
поделиться

So obviously

    // fix bug #22
    i++;

is not effective communication.

Good communication is mostly common sense. Say what you mean.

    // Compensate for removeFrob() decrementing i.
    i++;

Include the bug number if it seems likely to help future readers.

    // Skipping the next flange is necessary to maintain the loop
    // invariant if the lookup fails (bug #22).
    i++;

Sometimes important conversations are recorded in your bug tracking system. Sometimes a bug leads to a key insight that changes the shape of the code.

    // Treat this as a bleet. Misnomed grotzjammers and particle
    // bleets are actually both special cases of the same
    // situation; see Anna's analysis in bug #22.
    i++;
0
ответ дан 4 December 2019 в 05:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: