स्काला स्थिरांक के लिए नामकरण सम्मेलन?


97

स्काला स्थिरांक का नामकरण सम्मेलन क्या है? StackOverflow सुझावों पर एक संक्षिप्त खोज अपरकेस (नीचे की पहली पंक्ति) अपरकेस, लेकिन मैं दोबारा जांच करना चाहता था।

val ThisIsAConstant = 1.23
val THIS_IS_ANOTHER_CONSTANT = 1.55
val thisIsAThirdConstant = 1.94

स्केला शैली की सिफारिश किससे की जाती है?


2
जब इसे पारंपरिक, पूरी तरह से पूर्वनिर्धारित सी- / जावा-शैली की तरह उपयोग किया जाता है, तो पहले वाला। दूसरा रूप - और सामान्य रूप से नामों को रेखांकित करता है - वास्तव में कभी उपयोग नहीं किया जाता है। तीसरा आमतौर पर अपरिवर्तनीय मूल्यों के लिए उपयोग किया जाता है जो गतिशील रूप से उत्पन्न होते हैं।
डेस्टिन

3
मैं दूसरे का उपयोग कर रहा हूं, लेकिन ज्यादातर पूर्व जावा अनुभव के लिए। उपेक्षा करते हैं, मुझे लगता है कि सबसे आधिकारिक तरीका पहले वाला है (चूंकि इसका उपयोग स्वयं स्कैला लिब में किया जाता है, उदाहरण के लिए as जिसे परिभाषित किया गया है Pi) देखें।
ओम-नामांक

जवाबों:


127

आधिकारिक तौर पर अनुशंसित शैली (और मुझे आधिकारिक तौर पर मतलब है) पहली शैली है, पहले अक्षर के साथ ऊंट का मामला ऊपरी मामला है। यह स्काला में प्रोग्रामिंग पर ओडस्की द्वारा स्पष्ट रूप से रखी गई है।

शैली का पालन मानक पुस्तकालय द्वारा भी किया जाता है, और भाषा के शब्दार्थों में कुछ सहायता होती है: ऊपरी मामले से शुरू होने वाले पहचानकर्ताओं को पैटर्न मिलान में स्थिरांक के रूप में माना जाता है।

(दूसरे संस्करण में धारा ६.१०, पृष्ठ १०10)


1
आधिकारिक स्काला नामकरण दिशानिर्देशों को देखते हुए, वैरिएंट 3 वास्तव में अनुशंसित शैली है: docs.scala-lang.org/style/…
Matthias

4
@ माथियास जिसमें स्थिरांक शामिल नहीं हैं। एक भयानक निरीक्षण, लेकिन, मेरा विश्वास करो, न केवल यह सही नहीं है, बल्कि तीसरी शैली समस्याओं का कारण बन जाएगी , जैसे ही आप इसे पैटर्न मैच पर उपयोग करते हैं।
डैनियल सी। सोबरल

1
@ मैथियास मैंने अब इसके बारे में एक मुद्दा खोला है। मैं आम तौर पर इसे ठीक कर सकता हूं और पीआर करता हूं, लेकिन मुझे इन दिनों समय की कमी है। :(
डैनियल सी। सोबरल

1
@samthebest गैर-भावना। यह लक्षण में सही समझ में आता है, और यहां तक ​​कि कार्यों के दायरे में यह समझ में आता है कि क्या आप इसे पैटर्न मिलान पर उपयोग करने जा रहे हैं।
डैनियल सी। सोबरल

1
मैं अपने कोड में स्टाइल उल्लंघनों की जांच करने के लिए स्केलस्टाइल का उपयोग कर रहा हूं। लेकिन यह स्थिरांक के लिए इन नामकरण सम्मेलन त्रुटियों को पकड़ने के लिए प्रतीत नहीं होता है। क्या एक चेक को सक्षम करने का एक तरीका है जो सुनिश्चित करता है कि पहले अक्षर के साथ ऊंट मामले में स्थिरांक का नाम दिया गया है?
jithinpt

43

(यह डैनियल के जवाब के लिए एक परिशिष्ट टिप्पणी है, लेकिन मैं इसे सिंटैक्स हाइलाइटिंग और स्वरूपण के लाभ के लिए एक उत्तर के रूप में पोस्ट कर रहा हूं।)

भाषा के शब्दार्थ में महत्वपूर्ण होने के नाते एक प्रारंभिक पूंजी पत्र का उपयोग करने की शैली के बारे में डैनियल की बात अधिक सूक्ष्म और महत्वपूर्ण है, जब मैंने स्कैला सीखा, तब मैंने इसे मूल रूप से श्रेय दिया था।

निम्नलिखित कोड पर विचार करें:

object Case {
  val lowerConst = "lower"
  val UpperConst = "UPPER"

  def main(args: Array[String]) {
    for (i <- Seq(lowerConst, UpperConst, "should mismatch.").map(Option.apply)) {
      print("Input '%s' results in: ".format(i))
      i match {
        case Some(UpperConst) => println("UPPER!!!")
        case Some(lowerConst) => println("lower!")
        case _ => println("mismatch!")
      }
    }
  }
}

Naively मैंने उम्मीद की होगी कि मैच के सभी मामलों तक पहुंच सके। इसके बजाय यह प्रिंट करता है:

Input 'Some(lower)' results in: lower!
Input 'Some(UPPER)' results in: UPPER!!!
Input 'Some(should mismatch.)' results in: lower!

जो चल रहा है वह यह है कि case Some(lowerConst)वैली शैडो lowerConstऔर उसी नाम का एक स्थानीय वैरिएबल बनाता है जो किसी भी समय पॉपुलेटेड होगा Someजिसमें एक स्ट्रिंग का मूल्यांकन किया जाता है।

इसके आसपास काम करने के लिए भर्ती तरीके हैं, लेकिन सबसे सरल नामकरण के लिए स्टाइल गाइड का पालन करना है।

यदि आप नामकरण सम्मेलन का अनुसरण नहीं कर सकते हैं, तो जैसा कि @reggoodwin नीचे टिप्पणी में बताता है, आप चर नाम को टिक्स में डाल सकते हैं, जैसे कि

case Some(`lowerConst`) => println("lower!")

1
Leif के उत्तर में जोड़ना: यह परिदृश्य स्केल 15.2 में प्रोग्रामिंग में उल्लिखित है। यदि कोई विकल्प नहीं है, लेकिन एक कम मामले के साथ एक निरंतर शुरुआत का उपयोग करने के लिए तो इसे वापस टिक्स के साथ भाग दिया जा सकता है, उदाहरण के लिए `pi` => ....
reggoodwin

1
अगर कुछ (लोअरकॉन्स्ट) वैली लोअर कॉनस्टोन को छाया देता है, तो वैली अपरकोनस्ट को छायांकित करते हुए कुछ (अपरकेस) क्यों नहीं है?
एड्रियन

@Leif Wickland @Daniel C. सोबरल क्या पैटर्न मिलान के सम्मेलन के लिए स्थिरांक का मूल्य मायने रखता है? उदाहरण के लिए val UpperConst = "UPPER_CONST"ठीक है या यह होना चाहिएval UpperConst = "UpperConst"
nir

7

लगातार ऊंट मामले में नाम होना चाहिए। यही है, यदि सदस्य अंतिम है, अपरिवर्तनीय है और यह एक पैकेज ऑब्जेक्ट या ऑब्जेक्ट से संबंधित है , तो इसे एक स्थिरांक माना जा सकता है .... विधि, मान और चर नाम कम ऊंट मामले में होना चाहिए

http://docs.scala-lang.org/style/naming-conventions.html#constants-values-variable-and-methods


क्या पैटर्न मिलान के सम्मेलन के लिए स्थिरांक के मूल्य मायने रखते हैं? जैसे वाल UpperConst = "UPPER_CONST"भाग जैसे जावा-स्टाइल ठीक है या यह होना चाहिएval UpperConst = "UpperConst"
nir
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.