मैं सिर्फ RxJava , जावा के रिएक्टिवएक्स (जिसे आरएक्स और रिएक्टिव एक्सटेंशन्स के रूप में भी जाना जाता है ) के कार्यान्वयन के साथ शुरू कर रहा हूं । कुछ ऐसा जो वास्तव में मुझ पर छा गया, RxJava के फ़्लोएबल क्लास का विशाल आकार था : इसमें 460 विधियाँ हैं!
निष्पक्ष तौर पर:
बहुत सारे तरीके हैं जो अतिभारित होते हैं, जो कुल तरीकों की संख्या में काफी वृद्धि करते हैं।
शायद इस वर्ग को तोड़ दिया जाए, लेकिन आरएक्सजाव का मेरा ज्ञान और समझ बहुत सीमित है। RxJava को बनाने वाले लोग निश्चित रूप से बहुत स्मार्ट हैं, और वे कई तरीकों से फ़्लोएबल को चुनने के लिए मान्य तर्क प्रस्तुत कर सकते हैं ।
दूसरी ओर:
RxJava Microsoft के रिएक्टिव एक्सटेंशन्स का जावा कार्यान्वयन है , और इसमें फ्लोएबल क्लास भी नहीं है , इसलिए यह किसी मौजूदा क्लास को आँख बंद करके जावा में लागू करने का मामला नहीं है।
[ अद्यतन: इटैलिक में पिछले बिंदु तथ्यात्मक रूप से गलत है: माइक्रोसॉफ्ट के प्रत्यक्ष वर्ग है, जो 400 से अधिक तरीकों है, RxJava के लिए आधार के रूप में इस्तेमाल किया गया था नमूदार वर्ग, और flowable के समान है नमूदार लेकिन हैंडल डेटा की बड़ी मात्रा के लिए backpressure। तो RxJava टीम एक मौजूदा वर्ग को पोर्ट कर रही थी। यह पोस्ट RxJava के फ़्लोएबल क्लास के बजाय Microsoft द्वारा ऑब्ज़र्वेबल क्लास के मूल डिज़ाइन को चुनौती देने वाली होनी चाहिए ।]
RxJava केवल 3 साल से अधिक पुराना है, इसलिए यह कोड का उदाहरण नहीं है, जो अच्छे ( SOLID ) वर्ग डिजाइन सिद्धांतों के बारे में ज्ञान की कमी के कारण गलत तरीके से डिजाइन किया गया है (जैसा कि जावा के शुरुआती रिलीज के साथ हुआ था)।
एक वर्ग के लिए जितना बड़ा फ्लोएबल होता है उसका डिज़ाइन स्वाभाविक रूप से गलत लगता है, लेकिन शायद नहीं; इस एसई प्रश्न का एक उत्तर कक्षा विधियों की संख्या की सीमा क्या है? सुझाव दिया गया है कि उत्तर "आपके पास जितनी ज़रूरत है उतने तरीके हैं "।
स्पष्ट रूप से कुछ वर्ग ऐसे हैं जिन्हें भाषा की परवाह किए बिना उचित तरीके से उचित संख्या में तरीकों की आवश्यकता है, क्योंकि वे आसानी से किसी भी छोटी चीज को नहीं तोड़ते हैं और उनके पास उचित विशेषताओं और विशेषताओं की संख्या होती है। उदाहरण के लिए: स्ट्रिंग्स, रंग, स्प्रेडशीट सेल, डेटाबेस परिणाम सेट और HTTP अनुरोध। उन चीजों का प्रतिनिधित्व करने के लिए कक्षाओं के लिए शायद कुछ दर्जन विधियां होने के बाद अनुचित नहीं लगती हैं।
लेकिन क्या फ्लोएबल को वास्तव में 460 तरीकों की आवश्यकता होती है, या क्या यह इतना विशाल है कि यह आवश्यक रूप से खराब वर्ग डिजाइन का एक उदाहरण है?
[स्पष्ट होने के लिए: यह प्रश्न विशेष रूप से सामान्य रूप से भगवान की वस्तुओं के बजाय RxJava के फ़्लोएबल क्लास से संबंधित है ।]