"Architecture.md (2021)" तकनीकी विनिर्देशन
(matklad.github.io)ARCHITECTURE.md लिखने की सिफारिश
- open source project maintainers को
READMEऔरCONTRIBUTINGके साथARCHITECTUREदस्तावेज़ जोड़ने की जोरदार सिफारिश की जाती है। - यह दस्तावेज़ project की high-level architecture को समझाता है, और क्योंकि इसे बार-बार योगदान देने वाले contributors को पढ़ना चाहिए, इसे छोटा रखना बेहतर है।
ARCHITECTUREदस्तावेज़ में केवल वही सामग्री होनी चाहिए जो बार-बार नहीं बदलती; इसे code के साथ sync करने की कोशिश करने के बजाय साल में कुछ बार review करना अधिक उपयुक्त है।
दस्तावेज़ का उद्देश्य और महत्व
- project की physical architecture के बारे में ज्ञान ही सामान्य contributors और core developers के बीच सबसे बड़ा अंतर है।
- अगर आप project से परिचित नहीं हैं, तो patch लिखने में 2 गुना अधिक समय लगता है, और code बदलने की सही जगह समझने में 10 गुना अधिक समय लग सकता है।
ARCHITECTUREफ़ाइल इस अंतर को कम करने का एक प्रभावी तरीका है, और project की संरचना पर पुनर्विचार करने का अवसर भी देती है।
दस्तावेज़ की संरचना
- इसकी शुरुआत समस्या के एक नए दृष्टिकोण से दिए गए overview से होनी चाहिए, और modules के बीच संबंध समझाने वाला विस्तृत code map देना चाहिए।
- महत्वपूर्ण files, modules और types का उल्लेख करें, लेकिन सीधे link देने के बजाय नाम से खोजने के लिए प्रोत्साहित करें ताकि maintenance की आवश्यकता न पड़े।
- architectural invariants को स्पष्ट रूप से इंगित करना चाहिए, और layers के बीच boundaries को भी चिन्हित करना चाहिए।
स्थापत्य invariants और boundaries
- महत्वपूर्ण invariants अक्सर किसी चीज़ की अनुपस्थिति के रूप में व्यक्त होते हैं, और केवल code पढ़कर उन्हें समझना कठिन होता है।
- layers या systems के बीच boundaries, system के implementation के बारे में अप्रत्यक्ष जानकारी समेटे होती हैं और सभी संभावित implementations को सीमित करती हैं।
end-to-end concerns
- code map पूरा करने के बाद, end-to-end concerns के लिए एक अलग section जोड़ना चाहिए।
ARCHITECTUREदस्तावेज़ के अच्छे उदाहरण के रूप में rust-analyzer का architecture.md मौजूद है।
GN⁺ की राय:
ARCHITECTUREदस्तावेज़ project को समझने में मदद करता है और नए contributors को codebase से जल्दी परिचित कराने में महत्वपूर्ण भूमिका निभाता है।- यह दस्तावेज़ project की संरचना को स्पष्ट करता है और महत्वपूर्ण architectural principles तथा boundaries को उभारता है, जिससे developers system को बेहतर समझ पाते हैं।
- open source community में
ARCHITECTUREदस्तावेज़ को अपनाना project की टिकाऊ growth और maintenance में योगदान दे सकता है, और यह developers के लिए एक बेहद उपयोगी और रोचक दृष्टिकोण है।
1 टिप्पणियां
Hacker News टिप्पणियाँ