Подтвердить что ты не робот

Какой наименее полезный комментарий вы когда-либо видели?

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

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

Как рассказ cautonary, вы могли бы поделиться чем-то, что вы видели, который был действительно просто , что плохой, и если это не очевидно, покажите код, на который он ссылался, и укажите, что с ним не так.? Что должно отправиться туда?

См. также:

4b9b3361

Ответ 1

Только типичные комментарии Comp Sci 101:

$i = 0; //set i to 0

$i++; //use sneaky trick to add 1 to i!

if ($i==$j) { // I made sure to use == rather than = here to avoid a bug

Вот что.

Ответ 2

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

/**
 * Method declaration
 *
 *
 * @param table
 * @param row
 *
 * @throws SQLException
 */
void addTransactionDelete(Table table, Object row[]) throws SQLException {

Ответ 3

Я обнаружил, что пишу эту маленькую жемчужину раньше:

//@TODO: Rewrite this, it sucks. Seriously.

Обычно это хороший признак того, что я дошел до конца сеанса кодирования на ночь.

Ответ 4

// remember to comment code

WTF?: D

Ответ 5

Что-то вроде этого:

// This method takes two integer values and adds them together via the built-in
// .NET functionality. It would be possible to code the arithmetic function
// by hand, but since .NET provides it, that would be a waste of time
private int Add(int i, int j) // i is the first value, j is the second value
{
    // add the numbers together using the .NET "+" operator
    int z = i + j;

    // return the value to the calling function
    // return z;

    // this code was updated to simplify the return statement, eliminating the need
    // for a separate variable.
    // this statement performs the add functionality using the + operator on the two
    // parameter values, and then returns the result to the calling function
    return i + j;
}

И так далее.

Ответ 6

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

// Increase i by one
i++;

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

Ответ 7

Thread.Sleep(1000); // this will fix .NET crappy threading implementation

Ответ 8

Я когда-то работал над проектом со странным компилятором C. Это дало ошибку в действительном фрагменте кода, если не было добавлено комментарий между двумя утверждениями. Поэтому я изменил комментарий на:

// Do not remove this comment else compilation will fail.

И он отлично работал.

Ответ 9

Я не верю. Я пришел к этому вопросу после того, как у него было 22 ответа, и никто не указал наименее возможно полезный тип комментария:

комментарии неправильные.

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

Ответ 10

GhostDoc сам по себе предлагает некоторые интересные.

/// <summary>
/// Toes the foo.
/// </summary>
/// <returns></returns>
public Foo ToFoo()

Ответ 11

// secret sauce

Ответ 12

// Don't know why we have to do this

Ответ 13

try
{
...some code...
}
catch
{
// Just don't crash, it wasn't that important anyway.
}

* Вздох

Ответ 14

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


   /* Hmmm. A bit tricky. */

Ответ 15

//' OOOO oooo that smell!! Can't you smell that smell!??!??!!!!11!??/!!!!!1!!!!!!1

If Not Me.CurrentMenuItem.Parent Is Nothing Then
    For Each childMenuItem As MenuItem In aMenuItem.Children
        do something
    Next

    If Not Me.CurrentMenuItem.Parent.Parent Is Nothing Then
        //'item is at least a grand child
        For Each childMenuItem As MenuItem In aMenuItem.Children
            For Each grandchildMenuItem As MenuItem In childMenuItem.Children
                do something
            Next
        Next

        If Not Me.CurrentMenuItem.Parent.Parent.Parent Is Nothing Then
            //'item is at least a grand grand child
            For Each childMenuItem As MenuItem In aMenuItem.Children
                For Each grandchildMenuItem As MenuItem In childMenuItem.Children
                    For Each grandgrandchildMenuItem As MenuItem In grandchildMenuItem.Children
                        do something
                    Next
                Next
            Next

        End If
    End If
End If

Ответ 16

Комментарии по умолчанию, вставленные IDE.

В последнем проекте, над которым я работал, в котором использовался WebSphere Application Developer, было много разработчиков и подрядчиков по обслуживанию, которые, похоже, не беспокоились сотнями, если не тысячами классов Java, которые содержали подобные:

/**
 * @author SomeUserWhoShouldKnowBetter
 *
 * To change this generated comment edit the template variable "typecomment":
 * Window>Preferences>Java>Templates.
 * To enable and disable the creation of type comments go to
 * Window>Preferences>Java>Code Generation.
 */

Всегда существовала эта сплит-секунда между мыслью, что вы действительно нашли хорошо прокомментированный исходный файл и понимаете, что yup, это еще один комментарий по умолчанию, который заставил вас использовать SWEAR_WORD_OF_CHOICE.

Ответ 17

Я видел этот комментарий вчера в приложении С#:

//TODO: Remove this comment.

Ответ 18

Мой любимый комментарий во все времена.

/* our second do loop */
do {

Тот, кто написал это, вы знаете, кто вы.

Ответ 19

очень большой проект ядра базы данных в C много лет назад - тысячи строк кода с короткими именами с ошибками и ошибками и без комментариев... до тех пор, пока не будет глубоко вложенных if-conditions в несколько тысяч строк в модуль. появился следующий комментарий:

//if you get here then you really f**ked

к тому времени, я думаю, мы уже это знали!

Ответ 20

В огромном приложении VB5

dim J
J = 0 'magic
J = J 'more magic
for J=1 to 100
...do stuff...

Ссылка, очевидно, ЭТО... и да, приложение без этих двух строк выходит из строя во время выполнения с неизвестным кодом ошибки. Мы все еще не знаем почему.

Ответ 21

Взято из одного из сообщений в блогах:

В процессе очистки некоторого исходного кода для одного из проектов, которые я управляю, я наткнулся на следующие комментарии:

/*
   MAB 08-05-2004: Who wrote this routine? When did they do it? Who should 
   I call if I have questions about it? It worth it to have a good header
   here. It should helps to set context, it should identify the author 
   (hero or culprit!), including contact information, so that anyone who has
   questions can call or email. It useful to have the date noted, and a 
   brief statement of intention. On the other hand, this isn't meant to be 
   busy work; it meant to make maintenance easier--so don't go overboard.

   One other good reason to put your name on it: take credit! This is your
   craft
*/

а затем немного ниже:

#include "xxxMsg.h" // xxx messages
/*
   MAB 08-05-2004: With respect to the comment above, I gathered that
   from the filename. I think I need either more or less here. For one
   thing, xxxMsg.h is automatically generated from the .mc file. That might
   be interesting information. Another thing is that xxxMsg.h should NOT be
   added to source control, because it auto-generated. Alternatively, 
   don't bother with a comment at all.
*/

а затем еще раз:

/*
   MAB 08-05-2004: Defining a keyword?? This seems problemmatic [sic],
   in principle if not in practice. Is this a common idiom? 
*/

Ответ 22

AHHHRRRGGHHH Просто нашел это в каком-то древнем коде, поставил парня, что он был довольно забавным.

private
  //PRIVATE means PRIVATE so no comments for you
  function LoadIt(IntID: Integer): Integer;

Ответ 23

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

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

Хорошее эмпирическое правило: писать только комментарии, чтобы объяснить , почему код что-то делает, а не , что он делает.

Ответ 24

Обязательно должны быть комментарии, стоящие вместо обработки ошибок.

if(some_condition){
    do_stuff();
}
else{
    //An error occurred!
}

Ответ 25

Я только что нашел этот, написанный на линии перед прокомментированной строкой кода:

//This causes a crash for some reason. I know the real reason but it doesn't fit on this line.

Ответ 26

100k LOC-приложение, перенесенное с vb6 на vb.net. Похоже, что предыдущий разработчик помещал заголовок комментария на один метод, а затем копировал и вставлял точный комментарий на каждый использованный им метод. Сотни методов и каждый из них некорректно прокомментировали...

Когда я впервые увидел это, я засмеялся... Через 6 месяцев шутка носит тонкий цвет.

Ответ 27

Это абсолютно реальный пример из триггера базы данных:

/******************************************************************************
   NAME:       (repeat the trigger name)
   PURPOSE:    To perform work as each row is inserted or updated.
   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.0        27.6.2000             1. Created this trigger.
   PARAMETERS:
   INPUT:
   OUTPUT:
   RETURNED VALUE:
   CALLED BY:
   CALLS:
   EXAMPLE USE:
   ASSUMPTIONS:
   LIMITATIONS:
   ALGORITHM:
   NOTES:
******************************************************************************/

Ответ 28

/** function header comments required to pass checkstyle */

Ответ 29

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

try
{
  ...
}
catch
{
  // TODO: something catchy
}

Я также разместил этот файл в Daily WTF, поэтому я отрежу его только до комментария...

  // TODO: The following if block should be reduced to one return statememt:
  // return Regex.IsMatch(strTest, NAME_CHARS);
  if (!Regex.IsMatch(strTest, NAME_CHARS))
    return false;
  else
    return true;

Ответ 30

Один, которого я никогда не находил очень полезным:

<!--- Lasciate ogne speranza, voi ch'intrate --->