बिल्कुल बुराई नहीं। वास्तव में, यह शुद्ध है , और यदि-तो-और नहीं है।
हास्केल, एफ #, एमएल आदि जैसी कार्यात्मक भाषाओं में, यह इफ-तत्कालीन कथन हैं जिन्हें बुराई माना जाता है।
इसका कारण यह है कि किसी भी "एक्शन" की तरह एक अनिवार्यता अगर-तब-तब बयान आपको इसकी परिभाषा से एक चर घोषणा को अलग करने की आवश्यकता है, और आपके फ़ंक्शन के लिए राज्य का परिचय देता है।
उदाहरण के लिए, निम्नलिखित कोड में:
const var x = n % 3 == 1
? Parity.Even
: Parity.Odd;
बनाम
Parity x;
if (n % 3 == 1)
x = Parity.Even;
else
x = Parity.Odd;
पहले वाले को छोटे होने से अलग दो फायदे हैं:
x एक स्थिर है, और इसलिए बग को शुरू करने की बहुत कम संभावना है, और संभवतः उन तरीकों से अनुकूलित किया जा सकता है जो दूसरा कभी नहीं हो सकता है।
- प्रकार को अभिव्यक्ति द्वारा स्पष्ट किया जाता है, इसलिए संकलक आसानी से अनुमान लगा सकता है कि
xकिस प्रकार का होना चाहिए Parity।
भ्रामक रूप से, कार्यात्मक भाषाओं में, टर्नरी ऑपरेटर को अक्सर if-अन्यथा कहा जाता है। हास्केल में, आप कह सकते हैं x = if n mod 3 == 1 then Odd else Even।