それは一時的な解決策ですか?次に、レビュー担当者によって提案された名前を使用しますが、メソッドを廃止としてマークし、誰かがコードをコンパイルするたびに警告が生成されるようにします。
そうでない場合216147
は、コードがバグ追跡システムにリンクされていないため(ソース管理にリンクされているのはバグ追跡システムであるため)、コードで意味をなさないことが常にわかります。ソースコードは、バグチケットとバージョンへの参照に適した場所ではありません。これらの参照を本当に配置する必要がある場合は、コメントで行ってください。
コメントでさえ、バグ番号だけではあまり価値がないことに注意してください。次のコメントを想像してください:
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.
}
コードが10年前に書かれ、あなたがプロジェクトに参加したばかりで、バグ8247に関する情報をどこで見つけられるか尋ねたときに、同僚がWebサイトにバグのリストがあると言ったとします。システムソフトウェアを報告しますが、ウェブサイトは5年前にやり直され、バグの新しいリストには異なる番号が付けられています。
結論:このバグが何であるかわかりません。
同じコードをわずかに異なる方法で作成することもできます。
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.
}
これで、問題を明確に把握できます。コメントの最後のハイパーテキストリンクが5年前に無効になっているように見えても、それが問題にならないのは、なぜFindReportsByDate
に置き換えられたのかを理解できるからですFindReportsByDateOnly
。