เมื่อคิดถึงการพัฒนาซอฟต์แวร์ที่คล่องตัวและหลักการทั้งหมด (SRP, OCP, ... ) ฉันถามตัวเองว่าจะจัดการการบันทึกอย่างไร
การบันทึกถัดจากการใช้งานเป็นการละเมิด SRP หรือไม่
ฉันจะบอกว่าyes
เพราะการใช้งานควรจะสามารถทำงานได้โดยไม่ต้องเข้าสู่ระบบ ดังนั้นฉันจะใช้การบันทึกในวิธีที่ดีกว่าได้อย่างไร ฉันได้ตรวจสอบรูปแบบบางอย่างและได้ข้อสรุปว่าวิธีที่ดีที่สุดที่จะไม่ละเมิดหลักการในแบบที่ผู้ใช้กำหนด แต่เพื่อใช้รูปแบบใด ๆ ที่ทราบว่าละเมิดหลักการก็คือใช้รูปแบบมัณฑนากร
สมมติว่าเรามีส่วนประกอบจำนวนมากโดยไม่มีการละเมิด SRP จากนั้นเราต้องการเพิ่มการบันทึก
- องค์ประกอบ A
- องค์ประกอบ B ใช้ A
เราต้องการบันทึกสำหรับ A ดังนั้นเราจึงสร้างส่วนประกอบอีก D ที่ตกแต่งด้วย A ทั้งสองใช้อินเตอร์เฟส I
- อินเตอร์เฟส I
- component L (บันทึกองค์ประกอบของระบบ)
- องค์ประกอบ A ใช้ I
- component D ใช้ I, ตกแต่ง / ใช้ A, ใช้ L สำหรับการบันทึก
- องค์ประกอบ B ใช้ I
ข้อดี: - ฉันสามารถใช้ A โดยไม่ต้องบันทึก - การทดสอบ A หมายความว่าฉันไม่ต้องการ mocks การบันทึกใด ๆ - การทดสอบนั้นง่ายกว่า
ข้อเสีย: - ส่วนประกอบเพิ่มเติมและการทดสอบเพิ่มเติม
ฉันรู้ว่านี่เป็นคำถามเปิดการอภิปราย แต่ฉันต้องการทราบว่ามีคนใช้กลยุทธ์การบันทึกข้อมูลที่ดีกว่ามัณฑนากรหรือการละเมิด SRP สิ่งที่เกี่ยวกับคนตัดไม้ซิงเกิลตันแบบคงที่ซึ่งเป็นค่าเริ่มต้น NullLogger และถ้าต้องการ syslog- เข้าสู่ระบบหนึ่งเปลี่ยนวัตถุการใช้งานที่รันไทม์?