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
कुछ स्थितियों में बेहतर प्रदर्शन देता है।