ดังนั้นมันจึงเป็นทางออกชั่วคราว จากนั้นใช้ชื่อที่ผู้ตรวจสอบแนะนำ แต่ทำเครื่องหมายวิธีการนั้นว่าล้าสมัยดังนั้นการใช้มันจะสร้างคำเตือนทุกครั้งที่มีคนรวบรวมรหัส
หากไม่ใช่คุณอาจบอกทุกครั้ง 216147
ไม่มีเหตุผลในโค้ดเนื่องจากรหัสไม่ได้เชื่อมโยงกับระบบติดตามบั๊ก (เป็นระบบติดตามบั๊กซึ่งเชื่อมโยงกับตัวควบคุมแหล่งที่มา) ซอร์สโค้ดไม่ใช่แหล่งที่ดีสำหรับการอ้างอิงถึง bug tickets และ version และถ้าคุณต้องการใส่การอ้างอิงเหล่านั้นที่นั่นให้ทำในคอมเม้นท์
โปรดทราบว่าแม้ในความคิดเห็นหมายเลขข้อบกพร่องเพียงอย่างเดียวก็ไม่ได้มีค่ามาก ลองนึกภาพความคิดเห็นต่อไปนี้:
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.
}
ลองนึกภาพว่าโค้ดนี้เขียนเมื่อสิบปีที่แล้วว่าคุณเพิ่งเข้าร่วมโครงการและเมื่อคุณถามว่าคุณสามารถหาข้อมูลเกี่ยวกับข้อผิดพลาด 8247 ได้ที่ไหนเพื่อนร่วมงานของคุณบอกว่ามีรายการข้อผิดพลาดในเว็บไซต์ของ ซอฟต์แวร์ระบบการรายงาน แต่เว็บไซต์ถูกทำซ้ำเมื่อห้าปีก่อนและรายการข้อผิดพลาดใหม่มีจำนวนแตกต่างกัน
สรุป: คุณไม่ทราบว่าบั๊กนี้เกี่ยวกับอะไร
รหัสเดียวกันสามารถเขียนในวิธีที่แตกต่างกันเล็กน้อย:
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.
}
ตอนนี้คุณจะได้รับมุมมองที่ชัดเจนของปัญหา ถึงแม้ว่ามันจะปรากฏว่าไฮเปอร์ลิงค์ในตอนท้ายของการแสดงความคิดเห็นเป็นตายห้าปีที่ผ่านมามันไม่ได้เรื่องตั้งแต่คุณยังสามารถเข้าใจว่าทำไมถูกแทนที่ด้วยFindReportsByDate
FindReportsByDateOnly