हम अपनी व्यावसायिक वस्तुओं की बहुत सी इकाई परीक्षण और पुन: प्रसंस्करण कर रहे हैं, और मुझे अन्य साथियों की तुलना में कक्षा के डिजाइन पर बहुत अलग राय है।
एक उदाहरण वर्ग जिसका मैं प्रशंसक नहीं हूं:
public class Foo
{
private string field1;
private string field2;
private string field3;
private string field4;
private string field5;
public Foo() { }
public Foo(string in1, string in2)
{
field1 = in1;
field2 = in2;
}
public Foo(string in1, string in2, string in3, string in4)
{
field1 = in1;
field2 = in2;
field3 = in3;
}
public Prop1
{ get { return field1; } }
{ set { field1 = value; } }
public Prop2
{ get { return field2; } }
{ set { field2 = value; } }
public Prop3
{ get { return field3; } }
{ set { field3 = value; } }
public Prop4
{ get { return field4; } }
{ set { field4 = value; } }
public Prop5
{ get { return field5; } }
{ set { field5 = value; } }
}
"वास्तविक" वर्ग में, वे सभी स्ट्रिंग नहीं हैं, लेकिन कुछ मामलों में हमारे पास पूरी तरह से सार्वजनिक संपत्तियों के लिए 30 बैकिंग फ़ील्ड हैं।
मैं इस वर्ग से नफरत करता हूं , और मुझे नहीं पता कि मैं सिर्फ चुगली कर रहा हूं। नोट की कुछ बातें:
- गुणों में कोई तर्क नहीं के साथ निजी समर्थन क्षेत्र, अनावश्यक लगता है और वर्ग को दोष देता है
- मल्टीपल कंस्ट्रक्टर (कुछ हद तक ठीक है) लेकिन के साथ मिलकर
- एक सार्वजनिक सेटर होने के सभी गुणों, मैं एक प्रशंसक नहीं हूँ।
- खाली कंस्ट्रक्टर के कारण संभावित रूप से कोई भी गुण निर्दिष्ट नहीं किया जाएगा, यदि कोई कॉलर अनजान है, तो आप व्यवहार के लिए परीक्षण करने के लिए संभावित रूप से कुछ बहुत ही अवांछित और कठोर हो सकते हैं।
- यह बहुत सारे गुण है! (30 मामले में)
मुझे वास्तव में यह जानना बहुत मुश्किल है किFoo
किसी भी समय वस्तु किस स्थिति में है, एक कार्यान्वयनकर्ता के रूप में। तर्क दिया गया था "हमारे पास Prop5
ऑब्जेक्ट निर्माण के समय सेट करने के लिए आवश्यक जानकारी नहीं हो सकती । ठीक है, मुझे लगता है कि मैं इसे समझ सकता हूं, लेकिन अगर मामला केवल Prop5
सेटर को सार्वजनिक करता है, तो हमेशा एक क्लास में 30 संपत्तियों तक नहीं।
क्या मैं सिर्फ क्लास लेने के लिए नाइट-पिकी और / या पागल हो रहा हूं जो "आसान लिखने के लिए" (सब कुछ सार्वजनिक) होने के विपरीत "उपयोग करने में आसान" है? उपरोक्त जैसी कक्षाएं मेरे लिए चिल्लाती हैं, मुझे नहीं पता कि यह कैसे उपयोग किया जा रहा है, इसलिए मैं सिर्फ मामले में सब कुछ सार्वजनिक करने जा रहा हूं ।
अगर मैं बहुत अयोग्य नहीं हूं, तो इस प्रकार की सोच का मुकाबला करने के लिए अच्छे तर्क क्या हैं? मैं तर्कपूर्ण कलाकृतियों में बहुत अच्छा नहीं हूं, क्योंकि मैं अपनी बात को पूरी तरह से जानने की कोशिश कर रहा हूं (जानबूझकर नहीं)।
get
या set
:-) के स्थान पर जोड़ सकते हैं