Yani bu geçici bir çözüm mü? Ardından, gözden geçiren tarafından önerilen adı kullanın, ancak yöntemi geçersiz olarak işaretleyin, böylece birisinin kodu her kullanışında bir uyarı vermesi gerekir.
Değilse 216147
, kodun hata izleme sistemine bağlı olmadığından (kodun kaynak kontrolüne bağlı olan hata izleme sistemi olduğundan) kodda anlam ifade etmeyeceğini her zaman söyleyebilirsiniz . Kaynak kodu, hata biletlerine ve sürümlerine yapılan referanslar için iyi bir yer değildir ve bu referansları gerçekten oraya koymanız gerekirse, yorumlarda yapın.
Yorumlarda bile hata sayısının tek başına çok değerli olmadığını unutmayın. Aşağıdaki yorumu hayal edin:
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.
}
Kodun on yıl önce yazıldığını, projeye yeni katıldığınızı ve 8247 numaralı hata ile ilgili herhangi bir bilgiyi nerede bulabileceğinizi sorduğunuzu, iş arkadaşlarınızın web sitesinde bir hata listesi olduğunu söylediğini hayal edin. raporlama sistemi yazılımı, ancak web sitesi beş yıl önce yeniden yapıldı ve yeni hatalar listesi farklı numaralara sahip.
Sonuç: Bu hatanın ne hakkında olduğu hakkında hiçbir fikriniz yok.
Aynı kod biraz farklı bir şekilde yazılmış olabilir:
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.
}
Şimdi konuyla ilgili net bir görüş elde edersiniz. Yorumun sonundaki köprü metni bağlantısının beş yıl önce öldüğü görülse bile, bunun neden FindReportsByDate
değiştirildiğini hala anlayabildiğiniz için farketmez FindReportsByDateOnly
.