बिल्कुल बुराई नहीं। वास्तव में, यह शुद्ध है , और यदि-तो-और नहीं है।
हास्केल, एफ #, एमएल आदि जैसी कार्यात्मक भाषाओं में, यह इफ-तत्कालीन कथन हैं जिन्हें बुराई माना जाता है।
इसका कारण यह है कि किसी भी "एक्शन" की तरह एक अनिवार्यता अगर-तब-तब बयान आपको इसकी परिभाषा से एक चर घोषणा को अलग करने की आवश्यकता है, और आपके फ़ंक्शन के लिए राज्य का परिचय देता है।
उदाहरण के लिए, निम्नलिखित कोड में:
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
।