Итак, мне любопытно, является ли хорошей практикой записывать каждый метод вышеописанным способом? (мы всегда можем поставить флаг, чтобы разрешить такие журналы только при необходимости / во время отладки).
blockquote>В целом, №
Это, безусловно, не широко признано как хорошая практика 1 sup>.
Вот некоторые плюсы и минусы:
Да: если вы реализовали это, информация о трассировке полезна.
Да: вы можете отключить запись трассировки.
Нет: для нетривиального приложения количество журналов трассировки может быть огромным. Слишком много, чтобы хранить. Слишком много для анализа. Слишком много, чтобы попросить клиента отправить вас.
Нет: при ведении журнала возникают накладные расходы ... даже если ведение журнала отключено с помощью средства защиты времени выполнения в операторе ведения журнала 2 sup>.
Нет: дополнительные операторы журналирования в начале и конце каждого метода являются «беспорядочными», которые затрудняют чтение кода.
Нет: при условии, что дополнительные операторы журналирования добавляются вручную, это дополнительные усилия по программированию и дополнительный источник ошибок. (И ошибки могут быть трудно обнаружить в тесте. Собираетесь ли вы писать модульные тесты / что-нибудь еще, чтобы проверить, что трассировка была реализована правильно?)
Нет: отладка трассировки может изменить поведение вашего кода, если он многопоточный. Например, включение трассировки может привести к случайной синхронизации в не поточно-ориентированном приложении. Это может привести к изменению поведения неисправного приложения; c.f. Гейзенбаг .
Наконец, отладчик вашей IDE может позволить вам автоматически регистрировать вход и выход методов без каких-либо действий на уровне исходного кода. (Конечно, это не помогает с проблемой Heisenbug; см. Выше.)
1 - Если бы это было так, вы бы увидели эту практику во многих / большинстве открытых кодовых баз. Я не могу вспомнить, чтобы когда-либо видел его. Sup>
2 - Если вы найдете способ отключить его с помощью препроцессора, или путем внедрения кода времени сборки / загрузки, или с помощью конструкций
if (compileTimeConstFlag)
, вы можно снять накладные расходы. Но тогда вы теряете возможность включать и выключать трассировку. И влияние на ваш исходный код больше. Sup>
Не совсем. TFS не слишком хорош об импорте истории.
Зато, это - Ваш шанс перестроить Ваше дерево исходного кода.
MS создал инструментарий для создания импорта и экспортирует инструменты.
Но быстрый поиск не показывает (в первых нескольких хитах) никому, кто сделал тяжелую работу.
Другая опция состоит в том, чтобы импортировать текущее состояние (просто работают, TF добавляют в рекламу ответвления Импорта, затем переходят в Ваш рабочий проект), и имейте в наличии Хранилище для того, когда необходимо посмотреть на историю.