Więc to jest tymczasowe rozwiązanie? Następnie użyj nazwy sugerowanej przez recenzenta, ale oznacz metodę jako przestarzałą, aby użycie jej generowało ostrzeżenie za każdym razem, gdy ktoś kompiluje kod.
Jeśli nie, zawsze możesz powiedzieć, że 216147
to nie ma sensu w kodzie, ponieważ kod nie jest powiązany z systemem śledzenia błędów (jest to raczej system śledzenia błędów, który jest powiązany z kontrolą źródła). Kod źródłowy nie jest dobrym miejscem na odniesienia do zgłoszeń błędów i wersji, a jeśli naprawdę musisz tam umieścić te odniesienia, zrób to w komentarzach.
Pamiętaj, że nawet w komentarzach sam numer błędu nie jest zbyt cenny. Wyobraź sobie następujący komentarz:
public IEnumerable<Report> FindReportsByDateOnly(DateTime date)
{
// The following method replaces FindReportByDate, because of the bug 8247 in the
// reporting system.
var dateOnly = new DateTime(date.Year, date.Month, date.Day);
return this.FindReportByDate(dateOnly);
}
private IEnumerable<Report> FindReportsByDate(DateTime date)
{
Contract.Requires(date.Hour == 0);
Contract.Requires(date.Minute == 0);
Contract.Requires(date.Second == 0);
// TODO: Do the actual work.
}
Wyobraź sobie, że kod został napisany dziesięć lat temu, że właśnie dołączyłeś do projektu i że kiedy zapytałeś, gdzie możesz znaleźć informacje o błędzie 8247, twoi koledzy powiedzieli, że na stronie internetowej znajduje się lista błędów raportowanie oprogramowania systemowego, ale strona została przebudowana pięć lat temu, a nowa lista błędów ma różne numery.
Wniosek: nie masz pojęcia, o co chodzi w tym błędzie.
Ten sam kod mógł zostać napisany w nieco inny sposób:
public IEnumerable<Report> FindReportsByDateOnly(DateTime date)
{
// The reporting system we actually use is buggy when it comes to searching for a report
// when the DateTime contains not only a date, but also a time.
// For example, if looking for reports from `new DateTime(2011, 6, 9)` (June 9th, 2011)
// gives three reports, searching for reports from `new DateTime(2011, 6, 9, 8, 32, 0)`
// (June 9th, 2011, 8:32 AM) would always return an empty set (instead of isolating the
// date part, or at least be kind and throw an exception).
// See also: http://example.com/support/reporting-software/bug/8247
var dateOnly = new DateTime(date.Year, date.Month, date.Day);
return this.FindReportsByDate(dateOnly);
}
private IEnumerable<Report> FindReportsByDate(DateTime date)
{
Contract.Requires(date.Hour == 0);
Contract.Requires(date.Minute == 0);
Contract.Requires(date.Second == 0);
// TODO: Do the actual work.
}
Teraz masz jasny obraz problemu. Nawet jeśli wydaje się, że link hipertekstowy na końcu komentarza jest martwy pięć lat temu, nie ma to znaczenia, ponieważ nadal możesz zrozumieć, dlaczego FindReportsByDate
został zastąpiony FindReportsByDateOnly
.