Как вы помечаете код, чтобы вы могли вернуться позже и поработать с ним? - PullRequest
58 голосов
/ 02 декабря 2008

В C # я использую директивы #warning и #error,

#warning This is dirty code...
#error Fix this before everything explodes!

Таким образом, компилятор сообщит мне, что у меня еще есть работа. Какой метод вы используете для маркировки кода, чтобы не забыть о нем?

Ответы [ 21 ]

2 голосов
/ 22 июня 2010

Это не идеальный мир, и у нас не всегда есть бесконечное время для рефакторинга или обдумывания кода.

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

// REVIEW - RP - Is this the best way to achieve x? Could we use algorithm y?

То же самое относится к //REFACTOR

// REFACTOR - should pull this method up and remove near-dupe code in XYZ.cs
2 голосов
/ 03 декабря 2008

Я использую // TODO: или // HACK: в качестве напоминания о том, что что-то незакончено с примечанием, объясняющим почему. Я часто (читаю «редко») возвращаюсь и заканчиваю эти вещи из-за нехватки времени. Однако, когда я просматриваю код, у меня есть запись того, что осталось незавершенным и, что более важно, ПОЧЕМУ.

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

// НАЧАТЬ ЗДЕСЬ КРИС

^^^^^^^^^^^^^^^^^^^^ Сообщает мне, где я остановился, чтобы я мог минимизировать время загрузки в понедельник утром.

1 голос
/ 22 июня 2010

Если это какая-то долгосрочная техническая задолженность , вы можете комментировать как:

// TODO: This code loan causes an annual interest rate of 7.5% developer/hour. Upfront fee as stated by the current implementation. This contract is subject of prior authorization from the DCB (Developer's Code Bank), and tariff may change without warning.

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

1 голос
/ 22 июня 2010

Я программист на C ++, но я думаю, что моя техника может быть легко реализована на C # или любом другом языке:

У меня есть макрос ToDo(msg), который расширяется до создания статического объекта в локальной области видимости, конструктор которого выводит сообщение журнала. Таким образом, при первом выполнении незавершенного кода в выводе журнала появляется напоминание о том, что я больше не могу откладывать задачу.

Это выглядит так:

class ToDo_helper
{
  public:
     ToDo_helper(const std::string& msg, const char* file, int line)
     {
       std::string header(79, '*');
       Log(LOG_WARNING) << header << '\n'
                        << "  TO DO:\n"
                        << "    Task:  " << msg << '\n'
                        << "    File:  " << file << '\n'
                        << "    Line:  " << line << '\n'
                        << header;
     }
};

#define TODO_HELPER_2(X, file, line) \
  static Error::ToDo_helper tdh##line(X, file, line)

#define TODO_HELPER_1(X, file, line) TODO_HELPER_2(X, file, line)
#define ToDo(X) TODO_HELPER_1(X, __FILE__, __LINE__)

... и вы используете это так:

 void some_unfinished_business() {
   ToDo("Take care of unfinished business");
 }
1 голос
/ 03 декабря 2008

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

  1. Поместите флаг комментария рядом с кодом, который необходимо просмотреть. Большинство компиляторов могут распознавать общие флаги и отображать их организованно. Обычно в вашей IDE есть окно наблюдения, специально разработанное для этих флагов. Наиболее распространенный флаг комментария: // TODO. Вот как вы можете его использовать:

    // TODO: исправьте это до того, как оно будет выпущено. Это вызывает нарушение прав доступа, так как использует память, которая еще не создана.

  2. Один из способов пометить что-то, что необходимо решить перед выпуском, - создать бесполезную переменную. Большинство компиляторов предупредит вас, если у вас есть переменная, которая не используется. Вот как вы могли бы использовать эту технику:

    int This_Is_An_Access_Violation = 0;

  3. IDE Закладки. Большинство продуктов будут иметь возможность разместить закладку в вашем коде для дальнейшего использования. Это хорошая идея, за исключением того, что она видна только вам. Когда вы делитесь своим кодом, большинство IDE не будут делиться вашими закладками. Вы можете проверить файловую систему справки своей IDE, чтобы узнать, как использовать ее функции закладок.

1 голос
/ 03 декабря 2008

Я использую // FIXME: xxx для неработающего кода и // CHGME: xxx для кода, который требует внимания, но работает (возможно, только в ограниченном контексте).

1 голос
/ 02 декабря 2008

Комментарий Todo.

1 голос
/ 03 декабря 2008
// TODO: <explanation>

если это то, чего я до сих пор не реализовал и не хочу забывать.

// FIXME: <explanation>

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

Никогда не думал о параметрах # error / # warning. Это тоже может пригодиться.

0 голосов
/ 10 февраля 2009

Помимо отключения комментария "TODO:", многие IDE также отключают комментарий "ЗАДАЧА:". Некоторые IDE даже позволяют вам настроить свой собственный специальный идентификатор.

0 голосов
/ 10 февраля 2009

Как это делают большинство программистов, я использую комментарии TODO. Кроме того, я использую интерфейс задач Eclipse Mylyn . Когда задача активна, Mylyn запоминает все ресурсы, которые я открыл. Таким образом, я могу отслеживать

  1. где в файле нужно что-то делать (и что),
  2. в каких файлах я должен это делать, а
  3. к какой задаче они относятся.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...