मेरे पास BigDecimal
कक्षा का उपयोग कर कोड का एक उचित कोड है और मुझे इंटरफ़ेस की गड़बड़ी से नफरत है।बिगडेसिमल का विस्तार?
मैं निम्न विधियों के साथ स्थिर तरीकों के साथ एक सहायक वर्ग बनाने के द्वारा पूर्णांकों के साथ BigDecimal
रों का उपयोग कर के दर्द को कम किया गया है:
compare(BigDecimal first, int second)
divide(BigDecimal dividend, BigDecimal divisor, int scale)
divide(BigDecimal dividend, int divisor, int scale)
divide(int divident, int divisor, int scale)
multiply(BigDecimal first, BigDecimal second, int scale)
multiply(BigDecimal first, int second, int scale)
multiply(int first, int second, int scale)
zeroPad(BigDecimal value, int totalLength, int scale)
सब मैं अब के लिए की जरूरत है और कोड थोड़ा और अधिक पठनीय है कि पहले से। हालांकि, मैंने पढ़ा है कि स्थैतिक विधियां एक "बुरी" चीज हैं और वे ओओ-सिद्धांतों का पालन नहीं करते हैं।
यदि मैं BigDecimal
का विस्तार करता हूं, तो भी मैं एक नया प्रकार परिभाषित करता हूं और इस प्रकार मुझे अपने ऑब्जेक्ट से उन्हें लपेटने के लिए सभी विधियों को फिर से परिभाषित करना होगा या मैं उन्नत विधियों के साथ परिणामों का उपयोग नहीं कर पाऊंगा । ऐसा करने के लिए एक स्मार्ट चीज नहीं लगती है।
आप इस समस्या से कैसे संपर्क करेंगे?
दिलचस्प, मैंने अपने कोड में लगभग वही स्थिर तरीके बनाये हैं। मेरे लिए, यह पागल है कि 'बिगडिसीमल' में 'डिवाइड (बिगडिसीमल लाभांश, int divisor)' विधि अंतर्निहित नहीं है। पिछली बार जब आपको दशमलव से कुछ विभाजित करने की आवश्यकता थी? मेरे पास किसी भी कोड की गणना में divisor के रूप में 'int' के अलावा कुछ भी नहीं था। (यह नहीं कह रहा कि मामले मौजूद नहीं हैं, लेकिन divisor के रूप में 'int' सबसे संभावित परिदृश्य की तरह लगता है कि यह मानक पुस्तकालय सहित लायक होगा)। – ryvantage