सभी मानक-उत्तरों से बचने के लिए मैं Googled पर चल सकता हूं, मैं एक उदाहरण प्रदान करूंगा जो आप सभी पर हमला कर सकते हैं।
C # और Java (और बहुत से अन्य) में बहुत सारे प्रकार के कुछ 'अतिप्रवाह' व्यवहार हैं जो मुझे बिल्कुल पसंद नहीं हैं (उदाहरण type.MaxValue + type.SmallestValue == type.MinValue
के लिए int.MaxValue + 1 == int.MinValue
)।
लेकिन, मेरे शातिर स्वभाव को देखते हुए, मैं इस व्यवहार का विस्तार करके इस चोट के लिए कुछ अपमान जोड़ूंगा, चलो एक ओवरराइड DateTime
प्रकार कहते हैं । (मैं जानता हूँ कि DateTime
नेट में बंद है, लेकिन इस उदाहरण के लिए, मैं एक छद्म भाषा है कि वास्तव में सी # की तरह है, तथ्य यह है कि दिनांक समय सील नहीं किया गया है के अलावा उपयोग कर रहा हूँ)।
ओवरराइड Add
विधि:
/// <summary>
/// Increments this date with a timespan, but loops when
/// the maximum value for datetime is exceeded.
/// </summary>
/// <param name="ts">The timespan to (try to) add</param>
/// <returns>The Date, incremented with the given timespan.
/// If DateTime.MaxValue is exceeded, the sum wil 'overflow' and
/// continue from DateTime.MinValue.
/// </returns>
public DateTime override Add(TimeSpan ts)
{
try
{
return base.Add(ts);
}
catch (ArgumentOutOfRangeException nb)
{
// calculate how much the MaxValue is exceeded
// regular program flow
TimeSpan saldo = ts - (base.MaxValue - this);
return DateTime.MinValue.Add(saldo)
}
catch(Exception anyOther)
{
// 'real' exception handling.
}
}
बेशक यदि कोई इसे आसान तरीके से हल कर सकता है, लेकिन तथ्य यह है कि मैं सिर्फ यह देखने में विफल रहता हूं कि आप अपवादों का उपयोग क्यों नहीं कर सकते (तार्किक रूप से, मैं देख सकता हूं कि जब प्रदर्शन एक ऐसा मुद्दा है, जिसमें कुछ मामलों में अपवादों से बचा जाना चाहिए। )।
मुझे लगता है कि कई मामलों में वे अगर संरचनाओं की तुलना में अधिक स्पष्ट हैं और विधि बनाने वाले किसी भी अनुबंध को नहीं तोड़ते हैं।
IMHO "कभी भी नियमित कार्यक्रम प्रवाह के लिए उनका उपयोग न करें" प्रतिक्रिया हर किसी को लगती है कि यह अच्छी तरह से रेखांकित नहीं है क्योंकि उस प्रतिक्रिया की ताकत न्यायोचित हो सकती है।
या मैं गलत हूँ?
मैंने अन्य पदों को पढ़ा है, सभी प्रकार के विशेष मामलों से संबंधित है, लेकिन मेरी बात यह है कि यदि आप दोनों हैं तो इसमें कुछ भी गलत नहीं है:
- स्पष्ट
- अपने तरीके के अनुबंध का सम्मान करें
मुझे गोली मारो।
if
बयान से बेहतर क्यों है । आपको यह बहुत कठिन लगेगा। दूसरे शब्दों में: आपका बहुत आधार त्रुटिपूर्ण है, और आप जो निष्कर्ष निकालते हैं, वह इस प्रकार गलत है।