14
สิ่งที่ควรทำก่อนหน้า: YAGNI หรือ Good Design
YAGNIควรใช้จุดไหนในการต่อต้านการเขียนโค้ดที่ดีและในทางกลับกัน ฉันกำลังทำงานในโครงการในที่ทำงานและต้องการแนะนำมาตรฐานรหัสที่ดีให้กับเพื่อนร่วมงานของฉันอย่างช้าๆ (ปัจจุบันไม่มีและทุกอย่างก็แค่แฮ็คเข้าด้วยกันโดยไม่มีสัมผัสหรือเหตุผล) แต่หลังจากสร้างชุดของคลาส (เรา อย่าทำ TDD หรือน่าเสียดายที่การทดสอบหน่วยใด ๆ เลย) ฉันถอยหลังไปหนึ่งก้าวและคิดว่ามันเป็นการละเมิด YAGNI เพราะฉันรู้ด้วยความมั่นใจว่าเราไม่ต้องการขยายชั้นเรียนเหล่านี้ นี่คือตัวอย่างที่เป็นรูปธรรมของสิ่งที่ฉันหมายถึง: ฉันมีชั้นการเข้าถึงข้อมูลห่อชุดของขั้นตอนการจัดเก็บซึ่งใช้รูปแบบ Repository สไตล์พื้นฐานกับฟังก์ชั่น CRUD ขั้นพื้นฐาน IRepositoryเนื่องจากมีกำมือของวิธีการที่ทุกชั้นเรียนที่เก็บของฉันต้องฉันสร้างอินเตอร์เฟซทั่วไปสำหรับเก็บของฉันเรียกว่า อย่างไรก็ตามฉันได้สร้างอินเทอร์เฟซ "ตัวทำเครื่องหมาย" (เช่นอินเทอร์เฟซที่ไม่เพิ่มฟังก์ชันการทำงานใหม่) สำหรับที่เก็บแต่ละประเภท (เช่นICustomerRepository) และคลาสคอนกรีตนำไปใช้ ฉันได้ทำสิ่งเดียวกันกับการใช้ Factory เพื่อสร้างออบเจ็กต์ทางธุรกิจจาก DataReaders / DataSets ที่ส่งคืนโดย Stored Procedure ลายเซ็นของคลาสที่เก็บของฉันมีแนวโน้มที่จะมีลักษณะเช่นนี้: public class CustomerRepository : ICustomerRepository { ICustomerFactory factory = null; public CustomerRepository() : this(new …