Scala Language
सर्वोत्तम प्रथाएं
खोज…
टिप्पणियों
साइड इफेक्ट्स के बिना वैल्स, अपरिवर्तनीय वस्तुओं और तरीकों को प्राथमिकता दें। उनके लिए पहले पहुंचें। जब आप उनके लिए एक विशिष्ट आवश्यकता और औचित्य रखते हैं, तो साइड इफेक्ट्स वाले 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कुछ स्थितियों में बेहतर प्रदर्शन देता है।