ठीक है, मैं इस धागे में जो सामान देख रहा हूं, वह सब बहुत अच्छा है, लेकिन मेरे पास एक 'अपरिवर्तनीय' की परिभाषा है जो काम पर मेरे लिए बहुत मददगार रही है।
एक अपरिवर्तनीय कोई भी तार्किक नियम है जिसे आपके कार्यक्रम के निष्पादन के दौरान पालन किया जाना चाहिए जो कि एक मानव के लिए संचार किया जा सकता है, लेकिन आपके कंपाइलर को नहीं।
यह परिभाषा मददगार है क्योंकि यह दो समूहों में स्थितियों को स्पष्ट करती है: संकलक को लागू करने के साथ भरोसा किया जा सकता है, और जिन्हें उन दस्तावेज़ों पर चर्चा, टिप्पणी, या अन्यथा संपर्क करना चाहिए, ताकि बग को शुरू किए बिना कोडबीटी के साथ बातचीत करने के लिए उनसे संपर्क किया जा सके। ।
इसके अलावा, यह परिभाषा सहायक है क्योंकि यह आपको सामान्यीकरण का उपयोग करने की अनुमति देता है, "इनवेरिएंट खराब हैं"।
एक उदाहरण के रूप में, एक मैनुअल ट्रांसमिशन कार में शिफ्टर एक अपरिवर्तनीय से बचने के लिए इंजीनियर है। अगर मैं चाहता, तो मैं प्रत्येक गियर के लिए एक लीवर के साथ एक ट्रांसमिशन का निर्माण कर सकता था। यह लीवर आगे ("लगे") या पीछे ("अस्त-व्यस्त") हो सकता है। इस तरह की प्रणाली में, मैंने एक "अपरिवर्तनीय" बनाया है, जिसे इस तरह से प्रलेखित किया जा सकता है:
"यह महत्वपूर्ण है कि वर्तमान में लगे हुए गियर को एक अलग गियर लगे होने से पहले विघटित किया जाए। एक ही समय में किसी भी दो गियर को जोड़ने के लिए यांत्रिक तनाव का कारण होगा जो ट्रांसमिशन को अलग कर देगा। हमेशा दूसरे को उलझाने से पहले वर्तमान में लगे गियर को अलग करें।"
और इसलिए, एक मैला ड्राइविंग पर टूटे हुए प्रसारण को दोष दे सकता है। हालांकि, आधुनिक कारें एक एकल छड़ी का उपयोग करती हैं जो गियर्स के बीच में घूमती हैं। इसे इस तरह से डिज़ाइन किया गया है कि, एक आधुनिक स्टिक-शिफ्ट कार पर, एक ही समय में दो गियर संलग्न करना संभव नहीं है।
इस तरह, हम कह सकते हैं कि ट्रांसमिशन को 'इनवेरिएंट' को हटाने के लिए इंजीनियर किया गया है, क्योंकि यह खुद को यंत्रवत् रूप से कॉन्फ़िगर करने की अनुमति नहीं देता है जो तार्किक नियम का उल्लंघन करता है।
इस तरह का हर आवेग जिसे आप अपने कोड से हटाते हैं, एक सुधार है, क्योंकि यह इसके साथ काम करने के संज्ञानात्मक भार को कम करता है।