क्या सच तालिकाओं को लागू करने के लिए एक अच्छा सामान्य पैटर्न है?सच तालिकाओं को लागू करने के लिए सामान्य पैटर्न
मैं कुछ विरासत कोड (सी ++) दोबारा काम कर रहा हूं और मुझे एहसास हुआ कि जिस समारोह में मैं काम कर रहा हूं, जिसमें 3 बाइनरी इनपुट और 8 संभावित आउटपुट के साथ एक सत्य तालिका है। अगर वहाँ एक क्लीनर, अधिक maintainable/एक्स्टेंसिबल * जिस तरह से सेट अप करने के लिए है
// - + +
if ((prevdst5 < 0.0) && (dst5 > 0.0) && (nextdst5 > 0.0)){
thawpct = (dst5/(dst5 - prevdst5));
}
// - - +
if ((prevdst5 < 0.0) && (dst5 < 0.0) && (nextdst5 > 0.0)){
thawpct = (nextdst5/(nextdst5 - dst5));
}
// other cases...
return thawpct;
मूल रूप से मैं सोच रहा हूँ: यहाँ आठ परीक्षण और इसी निर्गम की दो का एक उदाहरण है।
- यदि कोई अन्य इनपुट जोड़ा जाता है तो क्या होगा? फिर यदि आवश्यक बयानों की संख्या 16 होगी, जो मेरे विचार में, वर्तमान पैटर्न के साथ प्रबंधन करने के लिए बहुत बोझिल होगी।
- क्या होगा अगर इनपुट इनपुट में से कई को एक ही आउटपुट में मैप करना चाहिए?
* कोडबेस एक पारिस्थितिक तंत्र मॉडल है जो अकादमी में उपयोग किया जाता है, इसलिए कोडर के परिप्रेक्ष्य के आधार पर समान चीजों के रखरखाव और विस्तार राशि।
क्या आपको यकीन है के लिए होता है? dst5 = 0.0 कहीं और, गुंजाइश से बाहर है? –
यकीन नहीं है कि मैं समझता हूँ? वास्तव में फ़ंक्शन के शीर्ष पर एक परीक्षण है: यदि (dst5 == 0.0) dst5 = 0.001; जो मुझे लगता है कि एक बग है (समानता के लिए फ़्लोटिंग पॉइंट नंबर की तुलना करें) – tbc
(पिछली टिप्पणी को संशोधित करने में बहुत देर हो चुकी है) यहां ठीक करें: सुनिश्चित नहीं है कि मैं समझता हूं? वास्तव में इस तरह एक परीक्षण है: अगर (dst5 == 0.0) dst5 = 0.001; समारोह के शीर्ष पर प्रत्येक इनपुट के लिए। मुझे वास्तव में लगता है कि यह एक बग है (समानता के लिए फ़्लोटिंग पॉइंट नंबर की तुलना करें) लेकिन कम से कम प्रत्येक इनपुट की संभावना का ख्याल रखता है 0. – tbc