เอกสารสเปกทางเทคนิค "Architecture.md (2021)"
(matklad.github.io)คำแนะนำในการเขียน ARCHITECTURE.md
- แนะนำอย่างยิ่งให้ผู้ดูแลโครงการโอเพนซอร์สเพิ่มเอกสาร
ARCHITECTUREไว้ถัดจากREADMEและCONTRIBUTING - เอกสารนี้ใช้อธิบายสถาปัตยกรรมระดับสูงของโครงการ และควรเขียนให้สั้น เพราะเป็นสิ่งที่ผู้ร่วมพัฒนาที่มีส่วนร่วมซ้ำ ๆ ควรอ่าน
- เอกสาร
ARCHITECTUREควรมีเฉพาะเนื้อหาที่ไม่ได้เปลี่ยนบ่อย และควรทบทวนปีละไม่กี่ครั้ง แทนที่จะพยายามซิงก์ให้ตรงกับโค้ดตลอดเวลา
เป้าหมายและความสำคัญของเอกสาร
- ความรู้เกี่ยวกับสถาปัตยกรรมเชิงกายภาพของโครงการคือความแตกต่างที่ใหญ่ที่สุดระหว่างผู้ร่วมพัฒนาทั่วไปกับนักพัฒนาหลัก
- หากไม่คุ้นเคยกับโครงการ การเขียนแพตช์จะใช้เวลามากขึ้น 2 เท่า และการหาว่าควรแก้โค้ดตรงไหนจะใช้เวลามากขึ้นถึง 10 เท่า
- ไฟล์
ARCHITECTUREเป็นวิธีที่มีประสิทธิภาพในการลดช่องว่างนี้ และยังเปิดโอกาสให้ทบทวนโครงสร้างของโครงการด้วย
โครงสร้างของเอกสาร
- ควรเริ่มจากภาพรวมที่มองปัญหาด้วยมุมมองใหม่ และให้ codemap แบบละเอียดที่อธิบายความสัมพันธ์ระหว่างโมดูล
- ควรระบุไฟล์ โมดูล และชนิดข้อมูลที่สำคัญ แต่แทนที่จะลิงก์ตรง ควรแนะนำให้ค้นหาด้วยชื่อเพื่อหลีกเลี่ยงภาระในการดูแลรักษา
- ควรชี้ให้เห็น invariants ทางสถาปัตยกรรมอย่างชัดเจน และระบุขอบเขตระหว่างเลเยอร์
Invariants ทางสถาปัตยกรรมและขอบเขต
- invariants ที่สำคัญมักแสดงออกผ่านการไม่มีอยู่ของบางสิ่ง และยากจะมองเห็นได้จากการอ่านโค้ดเพียงอย่างเดียว
- ขอบเขตระหว่างเลเยอร์หรือระบบมักสื่อข้อมูลเกี่ยวกับการนำระบบไปใช้โดยนัย และจำกัดรูปแบบการนำไปใช้ที่เป็นไปได้ทั้งหมด
ประเด็นที่ครอบคลุมข้ามส่วน
- หลังจากทำ codemap เสร็จแล้ว ควรเพิ่มส่วนแยกต่างหากสำหรับประเด็นที่ครอบคลุมข้ามส่วน
- ตัวอย่างที่ดีของเอกสาร
ARCHITECTUREคือ architecture.md ของ rust-analyzer
ความเห็นของ GN⁺:
- เอกสาร
ARCHITECTUREมีบทบาทสำคัญในการช่วยให้เข้าใจโครงการ และช่วยให้ผู้ร่วมพัฒนาใหม่คุ้นเคยกับ codebase ได้อย่างรวดเร็ว - เอกสารนี้ช่วยทำให้โครงสร้างของโครงการชัดเจนขึ้น และเน้นหลักการกับขอบเขตทางสถาปัตยกรรมที่สำคัญ เพื่อช่วยให้นักพัฒนาเข้าใจระบบได้ดียิ่งขึ้น
- การนำเอกสาร
ARCHITECTUREมาใช้ในชุมชนโอเพนซอร์สสามารถช่วยให้โครงการเติบโตและดูแลรักษาได้อย่างยั่งยืน ซึ่งเป็นแนวทางที่มีประโยชน์และน่าสนใจมากสำหรับนักพัฒนา
1 ความคิดเห็น
ความคิดเห็นบน Hacker News