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