खोज…


टिप्पणियों

साइड इफेक्ट्स के बिना वैल्स, अपरिवर्तनीय वस्तुओं और तरीकों को प्राथमिकता दें। उनके लिए पहले पहुंचें। जब आप उनके लिए एक विशिष्ट आवश्यकता और औचित्य रखते हैं, तो साइड इफेक्ट्स वाले var, उत्परिवर्तनीय वस्तुओं और विधियों का उपयोग करें।

- स्केला में प्रोग्रामिंग , ओडस्की, स्पून और वेनर्स द्वारा

ओडस्की की इस प्रस्तुति में और अधिक उदाहरण और दिशानिर्देश हैं।

इसे सरल रखें

सरल कार्यों को अधिरोहित न करें। अधिकांश समय आपको केवल आवश्यकता होगी:

  • बीजगणितीय डेटाेटिप्स
  • संरचनात्मक पुनरावृत्ति
  • मोनाद-जैसे flatMap ( map , flatMap , fold )

स्काला में बहुत सारी जटिल चीजें हैं, जैसे:

  • डिपेंडेंसी इंजेक्शन के लिए Cake pattern या Reader Monad
  • implicit तर्क के रूप में मनमाने मूल्यों को पारित करना।

नए लोगों के लिए ये चीजें स्पष्ट नहीं हैं: उन्हें समझने से पहले उनका उपयोग करने से बचें। एक वास्तविक आवश्यकता के बिना उन्नत अवधारणाओं का उपयोग करना कोड को बाधित करता है, जिससे इसे कम बनाए रखा जा सकता है।

एक अभिव्यक्ति में बहुत ज्यादा पैक न करें।

  • गणना इकाइयों के लिए सार्थक नाम खोजें।
  • संगणना या map का उपयोग संगणना को संयोजित करने के for करें।

मान लीजिए कि आपके पास ऐसा कुछ है:

if (userAuthorized.nonEmtpy) {
  makeRequest().map {
    case Success(respone) =>
      someProcessing(..)
      if (resendToUser) {
        sendToUser(...)
      }
    ...
  }
}

यदि आपके सभी कार्य या Either या किसी अन्य Validation -प्रकार के प्रकार में वापस आते हैं, तो आप लिख सकते हैं:

for {
  user     <- authorizeUser
  response <- requestToThirdParty(user)
  _        <- someProcessing(...)
} {
  sendToUser
}

एक कार्यात्मक शैली को प्राथमिकता दें, यथोचित

डिफ़ॉल्ट रूप से:

  • उपयोग val , नहीं var , जहां भी संभव हो। यह आपको कार्य वितरण सहित कई कार्यात्मक उपयोगिताओं का सहज लाभ उठाने की अनुमति देता है।
  • recursion और comprehensions उपयोग करें, लूप नहीं।
  • अपरिवर्तनीय संग्रह का उपयोग करें। इस का उपयोग कर के लिए एक corrolary है val जब भी संभव हो।
  • डेटा परिवर्तन, CQRS- शैली तर्क और CRUD पर ध्यान दें।

गैर-कार्यात्मक शैली चुनने के अच्छे कारण हैं:

  • var का उपयोग स्थानीय स्थिति (उदाहरण के लिए, किसी अभिनेता के अंदर) के लिए किया जा सकता है।
  • mutable कुछ स्थितियों में बेहतर प्रदर्शन देता है।


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow