मैं वर्तमान में मेरे कोड पुनर्रचना कर रहा हूँ पर आधारित होते हैं को लागू करने, ताकि सभी महत्वपूर्ण वर्गों (इकाई testability के लिए) एक इंटरफ़ेस को लागू। मैं एक कक्षा में आया जो आईसीओम्पेर्बल (गैर-टेम्पलेटेड) लागू करता है; कुछ ऐसा:एक अंतरफलक जिससे जेनरिक इंटरफ़ेस
public MyClass : IComparable
{
public int CompareTo(object obj)
{
MyClass cObj = obj as MyClass;
if (cObj == null) { throw new ArgumentException(); }
// etc.
}
}
मैं इसे इंटरफ़ेस करना चाहता हूं, और जेनेरिक का उपयोग कर रहा हूं; कुछ इस तरह:
public IMyClass : IComparable<IMyClass>
{
// Other methods here
}
public MyClass : IMyClass
{
public CompareTo<IMyClass>(IMyClass other)
{
...
}
// Other methods here
}
लेकिन फिर, आदर्श, MyClass
IComparable<MyClass>
(और फिर MyClass
की उपवर्गों को लागू करना चाहिए IComparable<MySubClass>
) लागू करना चाहिए।
क्या आप दृष्टिकोण मैं वर्णित के बारे में सोच है:
यह सब कई सवाल पूछने के लिए? क्या इस रिफैक्टरिंग करने का कोई बेहतर तरीका है? क्या MyClass
बनाने में कोई बात है IComparable<MyClass>
भी लागू करें, या यह व्यर्थ है क्योंकि हम पहले ही IComparable<IMyClass>
लागू कर चुके हैं? कोई भी प्रो-टिप्स या "सर्वश्रेष्ठ" -प्रैक्टिस मुझे अवगत कराया जा सकता है?
मुझे यकीन है कि मैं अंगूठे का अपना नियम से सहमत नहीं हूँ - कारण मैं इस बाहर इंटरफ़ेस कर रहा हूँ ताकि मैं इकाई परीक्षण वर्गों है कि इसका इस्तेमाल कर सकते हैं। इसका मतलब है कि मैं इस वर्ग का नकल कर सकता हूं (हालांकि तर्कसंगत है कि इसका मतलब है कि मैं * अंगूठे के नियम से सहमत हूं, क्योंकि मैं इसे यूनिट परीक्षणों में कार्यान्वित कर रहा हूं)। – Smashery
@Smashery: आपके उपयोग के मामले ने यह स्पष्ट नहीं किया। यह इंटरफेस का एक पूरी तरह से वैध उपयोग है जो "नियम का पालन करता है"। :-) –