"ए", "ए", और "द" मेथड और फंक्शन नामों में: आपका क्या लेना है? [बन्द है]


16

मुझे यकीन है कि हम में से कई ने एक या दूसरे बिंदु पर इस तरह विधि नाम देखे हैं:

  • UploadTheFileToTheServerPlease
  • CreateATemporaryFile
  • WriteTheRecordToTheDatabase
  • ResetTheSystemClock

यही है, विधि नाम जो व्याकरणिक रूप से सही अंग्रेजी वाक्य भी हैं, और उन्हें गद्य की तरह पढ़ने के लिए शुद्ध रूप से अतिरिक्त शब्द शामिल हैं। व्यक्तिगत रूप से, मैं इस तरह के "शाब्दिक" विधि के नामों का बहुत बड़ा प्रशंसक नहीं हूं, और आत्महत्या करना पसंद करता हूं, जबकि अभी भी यथासंभव स्पष्ट है। मेरे लिए, "a", "a", और "the" जैसे शब्द सीधे तौर पर विधि के नामों में स्पष्ट दिखते हैं, और यह वास्तव में उपयोगी कुछ भी जोड़े बिना विधि के नामों को बहुत लंबा कर देता है। मैं पिछले उदाहरणों के लिए निम्नलिखित विधि नामों को पसंद करूंगा:

  • UploadFileToServer
  • CreateTemporaryFile
  • WriteOutRecord
  • ResetSystemClock

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

तो, क्या आप "विधि के नाम जो गद्य की तरह पढ़ते हैं" शिविर या "विधि के नाम जो कहते हैं कि मेरा क्या अर्थ है लेकिन एक बुरे विदेशी भाषा-से-अंग्रेज़ी अनुवाद" शिविर की तरह ज़ोर से पढ़ें?


7
मैंने कभी इस तरह के नाम के साथ तरीके नहीं देखे हैं WriteTheRecordToTheDatabase। अगर किसी ने यह जाँच की तो उन्हें एक गंभीर बात करने को मिली।
टिम रॉबिन्सन

13
" Please"? वाह
विन्यासकर्ता

3
मैं बस यह जोड़ना चाहूंगा कि वर्डप्रेस में "the_contents ()," "get_the_post ()," आदि जैसे टेम्पलेट हेल्पर फ़ंक्शन हैं। यह मेरे लिए बकवास को खत्म करता है।
कार्सन मायर्स

1
@ करसन मायर्स हाह, इसका एक आदर्श वास्तविक दुनिया उदाहरण है। मैंने पिछली बार जब मैंने वर्डप्रेस कोड :-)
माइक स्पैल जूल

जवाबों:


21

मैं मानता हूँ कि गद्य विधियाँ एक अपवाद के साथ चूसती हैं:

यूनिट टेस्ट मामले

इन्हें आमतौर पर आपके कोड में कभी नहीं बुलाया जाता है और परीक्षण रिपोर्टों में दिखाया जाता है। जैसे, यह थोड़ा और अधिक गद्य के साथ पढ़ने के लिए आसान है:

  • AddACustomerOrderFailWhenCustomersIdIsInvalid: विफल
  • OutOBBoundsPriceReturnsAnError: उत्तीर्ण
  • CanDeleteAnEventFromASeason: पारित

यहां तक ​​कि इसे संयम से किया जाना चाहिए, लेकिन मैं इसे कम से कम एक मामले के रूप में देख सकता हूं जहां व्याकरणिक परिवर्धन यह व्यक्त करने के लिए थोड़ा आसान बना सकता है कि क्या पारित हुआ और क्या विफल रहा। यह निश्चित रूप से है, जब तक कि आपकी भाषा / रूपरेखा विधि नामों के अलावा परीक्षण पठन में परीक्षण-वर्णन के लिए एक अच्छा तंत्र प्रदान नहीं करती है, इस मामले में यह भी अनदेखा करता है।


1
+1 के अच्छे उदाहरण के लिए जहां गद्य विधि के नाम वास्तव में फायदेमंद हो सकते हैं। यह मज़ेदार है, क्योंकि अब जब आप इसका उल्लेख करते हैं, तो मैंने विशेष रूप से इकाई परीक्षण के नाम लिखते समय ऐसा किया है, और विशेष रूप से इसलिए मुझे पता था कि जब मैं उन्हें बाद में चला रहा था तो परीक्षण क्या कर रहा था।
माइक

यह उपयोगी है, और रॉय ओशेरोव के सुझाए गए MethodUnderTest_Condition_ExpectedBehaviour यूनिट टेस्ट नामकरण सम्मेलन में फिट बैठता है । जैसे AddOrder_WithInvalidCustomerId_Fails, CreateItem_WithOutOfBoundsPrice_ReturnsErrorऔरDeleteEvent_EventExistsInSeason_Succeeds
StuperUser

अपेक्षित व्यवहार के लिए @StuperUser, आपके वास्तव में अपेक्षित परीक्षण परिणाम डाल चुके हैं और इस प्रकार मुझे नहीं पता कि क्या विधि वापस आने वाली है।
ediblecode

@danRhul मेला बिंदु, मैं पर्याप्त स्पष्ट नहीं था; .._AdditionFailsऔर .._DeletionSucceedsबेहतर होना चाहिए। मैंने विधि परिणाम नहीं दिया, लेकिन जैसा कि आप बताते हैं कि वे परीक्षण पास / विफलता शब्दावली के साथ भ्रमित हो सकते हैं।
स्टुपरयूजर

10

ऑफिस स्पेस से लॉरेंस को सुरक्षित रखने के लिए ...

नहीं, नहीं, यार, मुझे विश्वास है कि अगर कोई मेरे साथ काम करता है, तो उसने एक फ़ंक्शन 'UploadTheFileToTheServerPlease' का नाम दिया है, वह अपने a- लात मारी, आदमी मिलेगा।


10

ऐसे "लंबे" नाम गद्य की तरह नहीं लगते हैं । जब अकेले-शायद, लेकिन बाकी कोड के साथ, वे सिर्फ एक गड़बड़ करते हैं। इसकी जांच - पड़ताल करें:

bool ResultOfTheUpload
      = UploadTheFileToTheServerPlease(TheNameOfTheFile, TheServersAddress);

Yuuuuk! ..

यह एक मान्य अंग्रेजी पाठ नहीं है, और किसी भी प्रोग्रामिंग भाषा में यह एक जैसा नहीं लगेगा। इसलिए लेखों पर बाइट्स खर्च करने में कोई समझदारी नहीं है।


1
मैं इस दृष्टिकोण को इतना नापसंद क्यों करता हूं इसका एक अच्छा उदाहरण! जब मैंने प्रश्न लिखा, मैं केवल गद्य की तरह लगने वाले विधि नामों पर ध्यान केंद्रित कर रहा था, लेकिन मैं आपसे सहमत हूं: कॉलिंग कोड को वास्तव में गद्य की तरह पढ़ना बहुत कठिन है, इसलिए व्यक्तिगत फ़ंक्शन नामों को ध्वनि की तरह लिखने में कोई मतलब नहीं है अंग्रेज़ी।
माइक

3
मेरा सुझाव हैbool ResultOfTheGentlyUploadOfTheFileToTheServer
विज़ार्ड।

मैंने एक ऐसे व्यक्ति के साथ काम किया है, जिसने कंपनी के मानकों का निर्माण किया है, जहां 'theVariable' और 'aMethod' का पालन किया जाना था। यह वही व्यक्ति भी कोड लाइन के सभी लाइनों को लंबवत रूप से पसंद करता है।
क्रिस

7

प्रोग्रामर के दृष्टिकोण से "UploadFileToServer" "UploadTheFileToTheServerPlease" की तुलना में पढ़ने और समझने में अधिक समझ में आता है।

प्रोग्रामिंग में अंग्रेजी व्याकरण, पठनीयता और समझ से अधिक मायने रखता है!


पूरी तरह से सहमत हूँ..यदि मैं कुछ दिनों के लिए पहली शैली में लिखे गए कोड को पढ़ता हूं तो मुझे यकीन है कि यह मुझे पागल कर देगा ..
नवीन

@ नवीन: मैंने इस तरह कोड के साथ काम किया है, और मुझे जो पहला मौका मिला, मैंने उन सभी तरीकों का नाम बदल दिया। और मुझे यकीन नहीं है कि यह सिर्फ डेवलपर था या नहीं, लेकिन मुझे लगता है कि जब आप उन्हें वाक्यों के रूप में लिखते हैं, तो कई कार्य करने की प्रवृत्ति होती है UploadTheFileAndProcessItAndEmailTheOrdersToTheCustomers, हालांकि उम्मीद है कि वास्तविक जीवन में यह काफी बुरा नहीं है।
माइक

@ मायक तब मैं 2 अलग-अलग तरीकों से विधि का खंडन करूँगा;)
गोपी

2

यह देखते हुए कि मेरे जीवन में कितने टाइपोस हैं, मैं समाप्त करूँगा

* UploadTehFileToTehServerPleaz
* WriteTehRecordToTehDatabase
* ResetTehSystemClock
* ICanHazTehCheezburger

गंभीरता से, मैं यह भी देखूंगा कि मेरी कक्षा का नाम क्या था। यदि मेरी कक्षा को "फ़ाइल" कहा जाता है, तो मैं शायद बस साथ जाऊंगा

*UploadToServer
*DownloadFromServer

तो यह होगा

   File file = new file;
   file.UploadtoServer(ServerAddress);

बस एक तुच्छ उदाहरण है, लेकिन उम्मीद है कि यह पर्याप्त है।


हेहे। मैंने वास्तव में "अंग्रेजी-जैसा" नामकरण पैटर्न के बाद "तेह" रेंगना विधि नामों में देखा है। आपके दूसरे बिंदु के रूप में: मैं पूरी तरह से सहमत हूं, विधियों के नामों में अतिरेक मेरा एक और पालतू पेशाब है ( File.UploadFileToServer... ugh)।
माइक

0

मैं व्यक्तिगत रूप से परवाह नहीं करता। मैंने उन्हें देखा है और वे मुझे परेशान नहीं करते हैं। मैं उनके बारे में तब तक नहीं सोचता था जब तक कि कोई अन्य प्रोग्रामर उनके बारे में रेंट पर नहीं जाता था। मुझे यह चौंकाने वाला लगा कि कोई व्यक्ति किसी चीज के बारे में इतना ध्यान रखेगा जो इतना कम मायने रखता है। मेरा मतलब है कि वह वास्तव में इसके बारे में गुस्सा था। लेकिन मेरे करियर की शुरुआत लगभग 11 साल पहले हुई थी, और तब से मैंने पाया है कि डेवलपर्स छोटी-छोटी बातों को लेकर नाराज होते हैं, जो वास्तव में काफी आम है। यही कारण है कि डेवलपर्स के प्रबंधकों को इतनी अच्छी तरह से भुगतान किया जाता है। उन्हें दैनिक आधार पर डेवलपर्स से निपटना पड़ता है।

और मैं इसके बजाय "UL_FlToSrv" देखूंगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.