मेरे पास एक प्रोग्रामर सहयोगी के साथ एक बहस है कि क्या यह केवल परीक्षण योग्य (उदाहरण के लिए इकाई परीक्षण के माध्यम से) बनाने के लिए कोड के एक काम के टुकड़े को संशोधित करने के लिए एक अच्छा या बुरा अभ्यास है।
मेरी राय है कि यह ठीक है, अच्छी वस्तु उन्मुख और सॉफ्टवेयर इंजीनियरिंग प्रथाओं को बनाए रखने की सीमा के भीतर ("सब कुछ सार्वजनिक नहीं कर रहा है", आदि)।
मेरे सहयोगी की राय यह है कि केवल परीक्षण उद्देश्यों के लिए संशोधित कोड (जो काम करता है) गलत है।
बस एक सरल उदाहरण, कोड के इस टुकड़े के बारे में सोचें जो कुछ घटक द्वारा उपयोग किया जाता है (सी # में लिखा है):
public void DoSomethingOnAllTypes()
{
var types = Assembly.GetExecutingAssembly().GetTypes();
foreach (var currentType in types)
{
// do something with this type (e.g: read it's attributes, process, etc).
}
}
मैंने सुझाव दिया है कि इस कोड को किसी अन्य विधि से कॉल करने के लिए संशोधित किया जा सकता है जो वास्तविक कार्य करेगा:
public void DoSomething(Assembly asm)
{
// not relying on Assembly.GetExecutingAssembly() anymore...
}
यह विधि काम करने के लिए एक असेंबली ऑब्जेक्ट में ले जाती है, जिससे परीक्षण करने के लिए अपनी स्वयं की असेंबली को पास करना संभव हो जाता है। मेरे सहयोगी को नहीं लगा कि यह एक अच्छा अभ्यास है।
एक अच्छा और सामान्य अभ्यास क्या माना जाता है?
Type
को एक पैरामीटर के रूप में लेना चाहिए , न कि एकAssembly
।