यह हो सकता है कि आप पोस्टेल के कानून के एक अपवाद को सुन सकते हैं : "जो आप भेजते हैं उसमें रूढ़िवादी बनें, जो आप स्वीकार करते हैं उसमें उदार हैं।"
अधिकतर यह कोड पुन: प्रयोज्य को अधिकतम करने के बारे में है। यह प्रदर्शित करने के लिए मामलों के साथ आना आसान है कि यह क्यों मदद करता है। Iterable<T>एक उदाहरण के रूप में जावा पर विचार करें । यदि केवल एक चीज जो आपकी विधि करती है T, वह सभी s के माध्यम से पुनरावृत्त होती है , तो Iterable<T>आपके पैरामीटर प्रकार के रूप में आपको 60 से अधिक अंतर्निहित कक्षाओं के साथ उस पद्धति का उपयोग करने की अनुमति मिलती है, न कि किसी कस्टम वर्ग का उल्लेख करने के लिए जो इंटरफ़ेस को लागू करता है। यदि आप इसे सीमित करते हैं, कहते हैं, Vector<T>तो आपके पद्धति को कॉल करने वाले किसी भी कोड को Vector<T>पहले बदलना होगा ।
दूसरी ओर, लौटने एक Iterable<T>एक विधि से कोड की राशि है कि उन है कि एक लेने के लिए अपनी वापसी मान का उपयोग कर सकते हैं की सीमा Iterable<T>पैरामीटर। आप एक बहुत ठोस प्रकार वापस करते हैं, की तरह Vector<T>है, तो अपने वापसी मान कोई भी तरीका है कि एक लेता में पारित किया जा सकता Serializable, Cloneable, Iterable<T>, Collection<T>, List<T>, RandomAccess, Vector<T>, AbstractList<T>, या AbstractCollection<T>, और यह उम्मीद के रूप में काम करेंगे।