เมื่อติดตาม SOLID การอ่านและการเขียนไฟล์มีความรับผิดชอบแยกกันสองอย่างหรือไม่?


13

ฉันเพิ่งเริ่มสำรวจ SOLID และฉันไม่แน่ใจว่าการอ่านจากไฟล์และการเขียนไปยังไฟล์เป็นความรับผิดชอบเดียวกันหรือไม่

เป้าหมายเป็นไฟล์ประเภทเดียวกัน ฉันต้องการอ่านและเขียน. pdf ในใบสมัครของฉัน

แอปพลิเคชันอยู่ใน Python หากสร้างความแตกต่าง

คำตอบ:


24

การใช้การอ่านและการเขียนน่าจะมีความเป็นไปได้สูงที่จะมีความเหนียวแน่นสูง ถ้ามีใครจะเปลี่ยนแปลง การติดต่อกันที่สูงเป็นตัวบ่งชี้ที่แข็งแกร่งของความรับผิดชอบเดี่ยวและหลักการความรับผิดชอบเดี่ยวบอกเราว่าพวกเขาควรจะรวมกันในระดับเดียวกัน หากการดำเนินการเหล่านั้นมีการทำงานร่วมกันในระดับต่ำโอกาสที่การแยกนั้นจะช่วยปรับปรุงการบำรุงรักษา

อย่างไรก็ตามหากมีผู้บริโภคที่อ่านข้อมูลโดยไม่ต้องเขียนหรือเขียนโดยไม่ต้องอ่านก็เป็นสิ่งบ่งชี้ว่าจากมุมมองส่วนต่อประสานที่คุณควรแยกการดำเนินการเหล่านี้ตามที่กำหนดโดยหลักการแยกส่วนต่อประสาน ซึ่งหมายความว่าผู้บริโภคควรกำหนดอินเทอร์เฟซสองที่พวกเขาสามารถขึ้นอยู่กับในขณะที่Fileคลาสจะใช้อินเทอร์เฟซทั้งสอง


8

เมื่อคุณใช้หลักการ SOLID ในการออกแบบวัตถุคุณสามารถพิจารณาการอ่านและการเขียนไฟล์เป็นความรับผิดชอบเดียว - ทำงานกับข้อมูลถาวร

อย่างไรก็ตามคุณไม่ควรใส่การอ่านและการเขียนไฟล์ในวิธีการหรือฟังก์ชั่นเดียวกัน


5

คำตอบอื่น ๆ ส่วนใหญ่ดูเหมือนจะถูกมองข้ามว่าในคำถามของคุณข้อมูลสำคัญชิ้นหนึ่งขาดหายไป - คุณไม่ได้บอกเราว่าเอกสารที่คุณกำลังจะอ่านและเขียนเกี่ยวข้องกันอย่างไรและเกี่ยวข้องกัน!

แอปพลิเคชันของคุณมีบางอย่างเช่น "วัตถุเอกสาร" และเขียนลงในไฟล์ PDF ก่อนแล้วจึงอ่านไฟล์เดิมอีกครั้งลงในวัตถุเอกสารที่คล้ายกันหรือไม่ หรือในทางกลับกันมันจะอ่านไฟล์ PDF เป็นเอกสารทำการแก้ไขบางอย่างและบันทึกเอกสารนั้นเป็นไฟล์ PDF ใหม่อีกครั้ง จากนั้นการอ่านและการเขียนควรถูกมองว่าเป็นความรับผิดชอบเดียว อาจเป็นกรณีที่แอปพลิเคชันของคุณเป็นหรือมีส่วนประกอบเช่น "โปรแกรมแก้ไข PDF" หรือ "เครื่องมือจัดการ PDF"

อย่างไรก็ตามหากส่วนหนึ่งของแอปพลิเคชันของคุณสร้างไฟล์ PDF บางตัวอย่างเช่นในองค์ประกอบการรายงานและส่วนอื่นที่ไม่เกี่ยวข้องของแอปพลิเคชันของคุณจะอ่าน PDF ที่แตกต่างกัน (ตัวอย่างเช่นเครื่องมือประเมินสิ่งที่แนบของเมล PDF หลังนั้นไม่มีอะไรเหมือนกันกับเคสที่ใช้ครั้งแรกดังนั้นงานเหล่านั้นจึงเป็นความรับผิดชอบที่แตกต่างกัน

โดยเฉพาะอย่างยิ่งสำหรับ PDF กรณีการใช้งานครั้งที่สองเป็นกรณีที่ฉันได้เห็นบ่อยขึ้นในแอปพลิเคชันประเภทต่างๆ มีไลบรารี / ส่วนประกอบอื่น ๆ อีกมากมายซึ่งสนับสนุนการสร้าง PDF และมีจำนวนน้อยกว่ามากที่รองรับการอ่าน PDF หากคุณกำลังจะใช้ห้องสมุดหนึ่งแห่งเพื่อสร้างไฟล์ PDF และห้องสมุดที่แตกต่างไปจากเดิมอย่างสิ้นเชิงเพื่ออ่าน PDF คุณควรจะเห็นว่าการอ่านและการเขียน PDF นั้นเป็นความรับผิดชอบแยกต่างหาก


นี่คล้ายกับคำตอบของสตีเว่น แต่เป็นตัวอย่างที่ชัดเจน
DavidS

@ David: คำตอบของ Steven เป็นเพียงนามธรรม แต่เนื่องจาก OP ขอไฟล์ PDF โดยเฉพาะฉันคิดว่ามันสมเหตุสมผลที่จะตอบคำถามนี้ในแบบที่เป็นรูปธรรมมากขึ้น และสำหรับ PDF ฉันไม่เห็นด้วยกับประโยคแรกของสตีเวนที่ว่า "การใช้การอ่านและการเขียนมีความเป็นไปได้สูงที่จะมีความเหนียวแน่นสูง" - จากประสบการณ์ของฉันสำหรับกรณีการใช้งาน PDF ทั่วไปตรงกันข้ามคือจริง
Doc Brown

ตัวอย่างคอนกรีตเป็นเลิศ ฉันแค่เปรียบเทียบการวิเคราะห์ คำตอบที่ดี!
DavidS

3

ตาม ( โรเบิร์ตซี. มาร์ติน ) ความรับผิดชอบคือชุดของหน้าที่ที่รับใช้นักแสดงคนหนึ่ง

นักแสดงควรเป็นแหล่งที่มาของการเปลี่ยนแปลงความรับผิดชอบที่กำหนด (ควรมีเหตุผลเพียงข้อเดียวเท่านั้นที่จะเปลี่ยนแปลง)

ในกรณีของคุณคุณควรกำหนดนักแสดงเป็นขั้นตอนแรกแล้วถามคำถาม: มีนักแสดงที่สนใจโดยการอ่านไฟล์และอื่น ๆ โดยการเขียนหรือไม่?

หากเป็นกรณีนั้นการอ่านและการเขียนไฟล์เป็นความรับผิดชอบแยกกันสองประการ เพราะจะมีการเปลี่ยนแปลงหลายแหล่ง (นักแสดงหลายคนอาจขอเปลี่ยนตรรกะการอ่านและสิ่งเดียวกันสำหรับการเขียน)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.