मेरे लिए यह स्थिरता का अनुपात है (जैसा कि कंक्रीट में सीमेंट किया जाता है, ओवन में पका हुआ मिट्टी, पत्थर में सेट, स्थायी स्याही में लिखा जाता है)। आपका कोड जितना अधिक अस्थिर होगा, उतनी ही उच्च संभावना होगी कि आपको भविष्य में इसे बदलने की आवश्यकता होगी, उत्पादक बनने के लिए गीली मिट्टी की तरह, जितनी आसानी से इसे करने की आवश्यकता होगी। मैं व्यवहार्यता पर जोर देता हूं और पठनीयता पर नहीं। मेरे लिए कोड बदलने में आसानी इसे पढ़ने की आसानी से ज्यादा महत्वपूर्ण है। कोड को पढ़ना आसान हो सकता है और एक दुःस्वप्न को बदलना आसान हो सकता है, और यदि वे उपयोग करने में दुःस्वप्न को बदलने के लिए कार्यान्वयन के विवरण को आसानी से पढ़ और आसानी से समझ पा रहे हैं? जब तक यह सिर्फ एक अकादमिक अभ्यास नहीं है, आम तौर पर उत्पादन कोडबेस में कोड को आसानी से समझने में सक्षम होने का बिंदु यह है कि इसे आसानी से आवश्यकतानुसार बदलने में सक्षम होने के इरादे से। यदि इसे बदलना मुश्किल है, फिर पठनीयता के कई लाभ खिड़की से बाहर जाते हैं। पठनीयता के संदर्भ में पठनीयता आम तौर पर केवल उपयोगी होती है, और अस्थिरता के संदर्भ में व्यवहार्यता ही उपयोगी होती है।
स्वाभाविक रूप से भी कोड को बनाए रखने के लिए सबसे मुश्किल है, भले ही यह पढ़ने में कितना आसान या कठिन हो, एक समस्या पैदा नहीं करता है अगर इसे बदलने का कोई कारण नहीं है, तो केवल इसका उपयोग करें। और इस तरह की गुणवत्ता को प्राप्त करना संभव है, विशेष रूप से निम्न-स्तरीय सिस्टम कोड के लिए जहां प्रदर्शन अक्सर सबसे अधिक गिनती करने के लिए होता है। मेरे पास C कोड है जो मैं अभी भी नियमित रूप से उपयोग करता हूं जो कि 80 के दशक के बाद से नहीं बदला है। तब से इसे बदलने की जरूरत नहीं है। कोड fugly है, बिट-फ़िडलिंग दिनों में लिखा गया है, और मैं मुश्किल से इसे समझता हूं। फिर भी यह आज भी लागू है, और इसका भरपूर उपयोग करने के लिए मुझे इसके कार्यान्वयन को समझने की आवश्यकता नहीं है।
पूरी तरह से लेखन परीक्षण स्थिरता में सुधार करने का एक तरीका है। एक और डीकोपलिंग है। यदि आपका कोड किसी और चीज पर निर्भर नहीं करता है, तो इसे बदलने का एकमात्र कारण यह है कि यदि यह स्वयं को बदलने की आवश्यकता है। कभी-कभी कोड दोहराव की एक मामूली राशि नाटकीय रूप से स्थिरता में सुधार करने के लिए डिकॉउपिंग तंत्र के रूप में काम कर सकती है जो इसे एक योग्य व्यापार बंद कर देती है यदि, बदले में, आपको कोड मिलता है जो अब किसी और चीज से पूरी तरह से स्वतंत्र है। अब वह कोड बाहरी दुनिया में होने वाले परिवर्तनों के लिए अयोग्य है। इस बीच कोड जो 10 विभिन्न बाहरी पुस्तकालयों पर निर्भर करता है, उसके भविष्य में बदलने का 10 गुना कारण है।
व्यवहार में एक और सहायक बात यह है कि अपने पुस्तकालय को अपने कोडबेस के अस्थिर हिस्सों से अलग करना, संभवतः इसे अलग से बनाना भी, जैसा कि आप तीसरे पक्ष के पुस्तकालयों के लिए कर सकते हैं (जिसका मतलब सिर्फ उपयोग करने के लिए है, परिवर्तित नहीं है, कम से कम आपके द्वारा नहीं। टीम)। बस उस प्रकार के संगठन लोगों को इसके साथ छेड़छाड़ करने से रोक सकते हैं।
एक और अतिसूक्ष्मवाद है। आपका कोड जितना कम करने की कोशिश करता है, उतनी ही संभावना है कि यह वही कर सकता है जो यह अच्छा करता है। अखंड डिजाइन लगभग स्थायी रूप से अस्थिर हैं, क्योंकि अधिक से अधिक कार्यक्षमता उनके साथ जुड़ जाती है, जितना अधिक अधूरा लगता है।
जब भी आप कोड लिखने का लक्ष्य रखते हैं तो स्थिरता आपका प्राथमिक लक्ष्य होना चाहिए, जो कि अनिवार्य रूप से बदलने में मुश्किल हो रहा है, जैसे कि समानांतर सिमड कोड जो कि मृत्यु के लिए सूक्ष्म-ट्यून किया गया है। आप कोड को बनाए रखने की संभावना को अधिकतम करने की कठिनाई का प्रतिकार करते हैं जिसे आपको कोड को बदलना नहीं होगा, और इसलिए भविष्य में इसे बनाए रखने की आवश्यकता नहीं होगी। कोड को बनाए रखने के लिए कितना भी मुश्किल क्यों न हो, रखरखाव का खर्च शून्य से नीचे ले आता है।