एक जावा विधि का नाम बहुत लंबा कब है? [बन्द है]


173

पिछले हफ्तों में मैंने कुछ लोगों को मेथड या क्लास (50 अक्षर) के लंबे नामों का उपयोग करते हुए देखा है, यह आमतौर पर इस आधार के तहत है कि यह पठनीयता में सुधार करता है, मेरी राय है कि इस तरह एक लंबा नाम एक संकेतक है कि हम हैं एक विधि वर्ग में बहुत या बहुत कुछ करने की कोशिश करना अगर हमें इतने लंबे नाम की आवश्यकता है, लेकिन मैं जानना चाहता था कि आप लोग इसके बारे में क्या सोचते हैं।

एक उदाहरण है:

getNumberOfSkinCareEligibleItemsWithinTransaction

19
हाँ, यह एक "कोड गंध" है ... c2.com/cgi/wiki?LongMethodSmell
Dan Rosenstark

23
जब यह> 666 वर्ण लंबा होता है तब आपको पता चलता है कि आपको कोई समस्या है।
थॉमस एडिंग

8
@ आपके उदाहरण में, "लॉन्ग मेथड" का विपरीत "शॉर्ट मेथड" है जिसे एक अच्छी बात माना जाता है। तो यह स्पष्ट रूप से विधि के नाम का जिक्र नहीं है; यह कोड की पंक्तियों का उल्लेख कर रहा है (या समान रूप से soemthing)। उदाहरण के लिए, f()एक बहुत छोटा कार्य है, लेकिन यह निश्चित रूप से अच्छा अभ्यास नहीं है ... और कुछ आपको कुछ प्रोग्रामिंग गणितज्ञों को बताना चाहिए :)
sfussenegger

3
@sfussenegger, यह सच है। लेकिन मैं विधि-नाम लंबाई और विधि लंबाई के बीच सहसंबंध पर दांव लगा रहा हूं। f()एक महान कार्य नहीं हो सकता है, लेकिन उस $()आदमी को जावास्क्रिप्ट विधि दुनिया में एक रॉकस्टार की तरह है।
दान रोसेनस्टार्क

7
@ यार, आपने जो लिंक दिया है वह विधि की लंबाई लाइनों में है, विधि नाम की लंबाई नहीं ।
Thorbjørn Ravn Andersen

जवाबों:


398

जावा या किसी अन्य भाषा में एक नाम, बहुत लंबा है जब एक छोटा नाम मौजूद होता है जो समान रूप से विधि के व्यवहार को व्यक्त करता है।


65
गणितीय रूप से सुरुचिपूर्ण।
Ricket

304
इसलिए, उदाहरण के लिए, के लिए boolean doesShorterNameExistThatEquallyConvaysTheBehaviorOfTheMethod(String s)refactored किया जाना चाहिए boolean isTooLong(String s)
z5h

6
मैं बिल्कुल सहमत नहीं हूं, क्योंकि आप न केवल व्यवहार को व्यक्त करना चाहते हैं, बल्कि परियोजना और भाषा का सम्मेलन भी रखना चाहते हैं। तो पायथन में आप कह सकते हैं eligible_items_cntलेकिन जावा में आप आमतौर पर कहते हैं getEligibleItemsCount
flybywire

17
@flybywire: कोई भी कन्वेंशन जो आपको लंबे समय तक नाम लिखने का काम करता है, संदिग्ध लाभ का है।
MAK

20
@MAK @ S.Lott getLength()बनाम के बारे में क्या length()? मैं वास्तव में 'प्राप्त' या 'सेट' टाइप करने के बाद ऑटोोकम्पिलियंस को देखना पसंद करता हूं - इसलिए मैं इस मामले में सहमति पर अधिक ध्यान देना चाहूंगा।
17

202

विधि नामों की लंबाई कम करने की कुछ तकनीकें:

  1. यदि आपका पूरा कार्यक्रम, या कक्षा, या मॉड्यूल 'त्वचा देखभाल आइटम' के बारे में है तो आप त्वचा की देखभाल छोड़ सकते हैं। उदाहरण के लिए, यदि आपकी कक्षा को बुलाया जाता है SkinCareUtils, जो आपको लाता हैgetNumberOfEligibleItemsWithinTransaction

  2. आप बदल सकते हैं के भीतर करने के लिए में ,getNumberOfEligibleItemsInTransaction

  3. आप ट्रांजेक्शन को Tx में बदल सकते हैं, जो आपको मिलता है getNumberOfEligibleItemsInTx

  4. या अगर विधि प्रकार के एक परम को स्वीकार Transactionकर लेती है तो आप InTx को पूरी तरह से छोड़ सकते हैं:getNumberOfEligibleItems

  5. आप संख्या बदलकर गिनती करें: getEligibleItemsCount

अब यह बहुत ही उचित है। और यह 60% कम है।


11
इसके अतिरिक्त, 5) वर्णानुक्रम में सूचीबद्ध सूचियों में एक-दूसरे को getEligibleItems()getEligibleItemsCount()
डालेंगे

4
और जैसा कि आमतौर पर सच है, छोटा नाम हाइकु नियम से फिट बैठता है।
साल

2
@mercator एक मानक सम्मेलन की तरह getEllusItems का उपयोग कर रहा है। अधिक से अधिक ItIt कथन में अस्पष्टता के लिए मौका कम कर देता है। कम अस्पष्ट के रूप में विधि को करने के लिए माना जाता है क्या तत्परता बढ़ जाती है। विधि में आगे देखे बिना "काउंट्स" एक विधि जो लंबे समय में "हो जाता है" की तुलना में कम स्पष्ट है।
बिल

53
मैं की तरह abbr नापसंद Tx, Cnt, grph, और इतने पर ... (Btw, Txलघु "ट्रांसमिशन" या "ट्रांसमीटर" के लिए है)
Meinersbur

14
हाँ, मैं आपसे तब तक सहमत था जब तक आपने "टीएक्स" का उपयोग करने का निर्णय नहीं लिया था।
पोंकाडूडल

183

बस एक बदलाव के लिए, एक गैर-व्यक्तिपरक उत्तर: 65536 वर्ण।

A.java:1: UTF8 स्ट्रिंग "xxxxxxxxxxxxxxxxxxxxxx ..." के लिए प्रतिनिधित्व निरंतर पूल के लिए बहुत लंबा है

;-)


4
हाँ, यह बहुत लंबा है जब JVM खिचड़ी भाषा इसे मो नहीं संभालती है :)
अनुराग

35
के लिए +1 शाब्दिक जवाब।
साल

37
तकनीकी रूप से, जावा भाषा युक्ति में पहचानकर्ता की लंबाई की ऊपरी सीमा नहीं है। यह आपके जेवीएम कार्यान्वयन की एक सीमा है। चीयर्स!
कोयलमैन

13
रवि का कंपाइलर स्पष्ट रूप से कल्पना के अनुरूप नहीं है। java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.8 कहते हैं: "एक पहचानकर्ता एक असीमित-लंबाई अनुक्रम है ..."
माइकल मायर्स

6
त्रुटि संदेश इंगित करता है कि JVM कल्पना की एक ऊपरी सीमा है। Utf8's का निरंतर पूल प्रतिनिधित्व यहां निर्दिष्ट 2 ^ 16 बाइट्स तक सीमित है । क्लास के नाम और विधि के नाम को निरंतर पूल में utf8 के रूप में संग्रहीत किया जाना चाहिए।
thejoshwolfe

42

मैं सभी से सहमत हूं: विधि के नाम बहुत लंबे नहीं होने चाहिए। मैं हालांकि एक अपवाद जोड़ना चाहता हूं:

JUnit परीक्षण विधियों के नाम, हालांकि, लंबे हो सकते हैं और वाक्यों से मिलते जुलते होने चाहिए।

क्यों?

  • क्योंकि उन्हें दूसरे कोड में नहीं बुलाया जाता है।
  • क्योंकि उनका उपयोग परीक्षण नामों के रूप में किया जाता है।
  • क्योंकि फिर उन्हें आवश्यकताओं का वर्णन करने वाले वाक्य के रूप में लिखा जा सकता है। (उदाहरण के लिए, एजिलेडॉक्स का उपयोग करके )

उदाहरण:

    @Test
    public void testDialogClosesDownWhenTheRedButtonIsPressedTwice() {
        ...
    }

इस विचार के बारे में अधिक जानकारी के लिए " व्यवहार प्रेरित डिजाइन " देखें ।


5
+1 मैं इससे सहमत हूं और यह भी है कि मैं क्या कर रहा हूं, हालाँकि JUnit 4 विधियों को testअब शुरू करने की आवश्यकता नहीं है, यह उपयोग करने की संभावना भी खोलता है should: जैसे कि dialogShouldCloseWhenTheRedButtonIsPressedTwice()। या आप परीक्षण वर्ग DialogShouldऔर फिर विधि को कॉल कर सकते हैं closeWhenTheRedButtonIsPressedTwice(), इसलिए उन्हें एक साथ पढ़ने के लिए DialogShould.closeWhenTheRedButtonIsPressedTwice():।
स्टिव्लो

जब भी मैं सहमत हूं, मैं यह भी सुझाव देना चाहता हूं कि बहुत लंबा वाक्य एक परीक्षण का सुझाव दे सकता है जो बहुत अधिक कर रहा है!
ब्रायन एग्न्यू

17

प्रसंग "... भीतरघात" स्पष्ट होना चाहिए। यही वस्तु-उन्मुखता है।

विधि एक वर्ग का हिस्सा है। यदि कक्षा का अर्थ "लेन-देन" नहीं है - और यदि यह आपको हर समय "भीतर का" कहने से नहीं बचाता है, तो आपको समस्याएँ हैं।


2
लेनदेन के कुछ प्रकार के रूप में अच्छी तरह से कर सकते हैं
willcodejavaforfood

3
जैसा कि आप ऊपर दिए गए सर्वश्रेष्ठ स्कोरिंग उत्तर से बता सकते हैं, ओओ सलाह के बजाय आउटबैक सादगी के लिए जाएं। +1
डेन रोसेनस्टार्क

@ प्यार लोग कभी गलत नहीं होते।
पर्देटडॉग

12

मैं नामों के लिए हाइकु नियम का उपयोग करता हूं :

 Seven syllable class names 
 five for variables
 seven for method and other names

ये अधिकतम नामों के लिए अंगूठे के नियम हैं। मैं इसे तभी उल्लंघन करता हूं जब यह पठनीयता में सुधार करता है। RecalculateMortgageInterest (currentRate, quoteSet ...) जैसा कुछ recalculateMortgageInterestRate या recalculateMortgageInterestRateFromSet से बेहतर है क्योंकि इसमें दरें शामिल हैं और उद्धरणों का एक सेट javadoc या .NET समकक्ष जैसे डॉक्स से बहुत स्पष्ट होना चाहिए।

ध्यान दें: वास्तविक हाइकु नहीं, क्योंकि यह 5-7-5 के बजाय 7-5-7 है। लेकिन मैं अभी भी इसे हाइकू कहना पसंद करता हूं।


13
कक्षाएं सात मिलती हैं, चर पांच से कम, बाकी सात के लिए
जेम्स

8
"अधिकांश पाँच पर चर" (पाँच से कम सटीक नहीं है)
जेसन एस

छोटे नाम कम कोड पठनीयता का कारण बन सकते हैं।
डेनिस एम।

10

जावा के पास लंबे नामों को प्रोत्साहित करने की संस्कृति है, शायद इसलिए कि आईडीई अच्छे स्वत: पूर्णता के साथ आते हैं।

इस साइट का कहना है कि JRE में सबसे लंबे वर्ग का नाम है InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedStateजो 92 वर्ण लंबा है।

सबसे लंबी विधि के नाम के रूप में, मैंने इसे पाया है supportsDataDefinitionAndDataManipulationTransactions, जो कि 52 वर्ण है।


20
ऐसा लगता है कि अतिरेक विभाग के द्वारा नामित लोगों के नाम पर उस वर्ग को नामित किया गया था, जो कि अतिरेक विभाग में चीजों का नाम रखने के लिए है।
माइकल मैडसेन

1
@MichaelMadsen: क्या यह वास्तव में बेमानी है, या यह एक फ्रेम को किसी अन्य फ्रेम के अंदर घोंसले का वर्णन कर रहा है?
14

PEP-8 उस वर्ग नाम के साथ एक शब्द चाहेगा।
मतीन उल्हाक

9

कभी भी एक लंबे शब्द का उपयोग न करें जब एक कम हो जाएगा।

मुझे नहीं लगता कि आपके "विधि नाम की लंबाई विधि की लंबाई के लिए आनुपातिक है" वास्तव में पानी रखती है।

आपके द्वारा दिया गया उदाहरण लें: "getNumberOfSkinCareEl योग्यItemsWithinTransaction"। मुझे लगता है कि यह सिर्फ एक काम करता है: यह एक निश्चित श्रेणी में आने वाले लेनदेन में मदों की संख्या को गिनाता है। बेशक मैं विधि के लिए वास्तविक कोड देखे बिना न्याय नहीं कर सकता, लेकिन यह मेरे लिए एक अच्छी विधि की तरह लगता है।

दूसरी ओर, मैंने बहुत सारे तरीकों और संक्षिप्त नामों के साथ देखा है जो बहुत से काम करते हैं, जैसे "प्रक्रियासेले" या कभी लोकप्रिय "डस्टफ"।

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

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

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


इस खराब उत्तर के लिए +1 जो पीड़ित है।
दान रोसेनस्टार्क

7

अपना इंटरफ़ेस डिज़ाइन करें जिस तरह से आप चाहते हैं, और कार्यान्वयन मैच करें।

उदाहरण के लिए, हो सकता है कि मैं लिखूं

getTransaction().getItems(SKIN_CARE).getEligible().size()

या जावा 8 धाराओं के साथ:

getTransaction().getItems().stream()
    .filter(item -> item.getType() == SKIN_CARE)
    .filter(item -> item.isEligible())
    .count();

6

मेरा नियम इस प्रकार है: यदि कोई नाम इतना लंबा है कि उसे स्वयं की एक पंक्ति में प्रकट होना है, तो यह बहुत लंबा है। (व्यवहार में, इसका मतलब है कि मैं शायद ही कभी 20 वर्णों से ऊपर हूं।)

यह अनुसंधान को दर्शाता है कि कोड की दृश्यमान ऊर्ध्वाधर रेखाएं सकारात्मक रूप से कोडिंग गति / प्रभावशीलता के साथ संबंधित हैं। यदि क्लास / मेथड नेम को काफी नुकसान पहुंचाने लगे, तो वे बहुत लंबे हो गए।

एक टिप्पणी जोड़ें जहां विधि / वर्ग घोषित किया गया है और आईडीई आपको वहां ले जाता है यदि आप इसके लिए एक लंबा विवरण चाहते हैं।


मुझे इस तरह के नियम पसंद हैं। जब तक आप यह ध्यान रखते हैं कि आप / आपकी टीम ने उन्हें बेतरतीब ढंग से तैयार किया है, यह सब अच्छा है। दूसरी ओर, मैं इसे आगे नहीं बढ़ा सकता क्योंकि "रिसर्च शो" वास्तव में उस शोध के लिंक की आवश्यकता होगी, या इसके बारे में कुछ ...
दान रोसेनस्टार्क

5

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


3

जब आप अगली बार एक विधि का नाम लिखने जा रहे हैं, तो बस बोलो बोली

"The man who is going to maintain your code is a phyco who knows where you stay"

13
अच्छी बात यह है कि वह सिर्फ समुद्री शैवाल है और 'साइको' नहीं
स्टिंगजैक

2

उस विधि का नाम निश्चित रूप से बहुत लंबा है। जब मैं इस तरह के आकार के नाम पढ़ रहा होता हूं, तो मेरा मन भटक जाता है। यह रिक्त स्थान के बिना एक वाक्य पढ़ने की तरह है।

व्यक्तिगत रूप से, मैं संभव के रूप में तरीकों में कुछ शब्द पसंद करता हूं। यदि पैकेज और वर्ग का नाम अर्थ बता सकता है तो आपकी मदद की जाती है। यदि कक्षा की जिम्मेदारी बहुत संक्षिप्त है , तो एक विशाल विधि नाम की आवश्यकता नहीं है। मैं उत्सुक हूँ कि वहाँ पर "भीतर विचलन" क्यों है।

"GetNumberOfSkinCareEl योग्यItemsWithinTransaction" बन सकता है:

com.mycompany.app.product.SkinCareQuery.getNumEligibleItems ();

तब उपयोग में होने पर, विधि "query.getNumEl योग्यItems ()" जैसी दिख सकती है


2

एक चर नाम बहुत लंबा है जब एक छोटा नाम पूरे कार्यक्रम में बेहतर कोड पठनीयता, या कार्यक्रम के महत्वपूर्ण भागों के लिए अनुमति देगा।

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

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

यह बनाने के लिए एक आसान व्यापार नहीं है, क्योंकि आपको यह विचार करना होगा कि कोड रीडर क्या समझने की कोशिश कर रहा है, और यह भी ध्यान रखें कि समय के साथ कोड कैसे बदलेगा और बढ़ेगा। इसलिए नामकरण कठिन है।

पठनीयता इसीलिए कि मुझे DescriptiveLoopCounterName के बजाय लूप काउंटर के रूप में उपयोग करना स्वीकार्य है। क्योंकि यह एक चर के लिए सबसे आम उपयोग है, आप यह बताकर कम से कम स्क्रीन स्पेस खर्च कर सकते हैं कि यह क्यों मौजूद है। लंबा नाम केवल यह समझने में कठिन बनाकर समय बर्बाद करने वाला है कि आप लूप स्थिति का परीक्षण कैसे कर रहे हैं या किसी सरणी में अनुक्रमण कर रहे हैं।

स्पेक्ट्रम के दूसरे छोर पर, यदि कोई फ़ंक्शन या चर का उपयोग शायद ही कभी एक जटिल ऑपरेशन में किया जाता है, जैसे कि मल्टी-पैरामीटर फ़ंक्शन कॉल में पारित किया जाता है, तो आप इसे एक अत्यधिक विवरणात्मक नाम दे सकते हैं।


1

किसी भी अन्य भाषा के साथ के रूप में: जब यह अब एकल क्रिया का वर्णन करता है जो फ़ंक्शन करता है।


1

मैं कहूंगा कि अच्छे उत्तरों के संयोजन का उपयोग करें और उचित रहें।

पूरी तरह से, स्पष्ट रूप से और आसानी से वर्णन करता है कि विधि क्या करती है।

यदि विधि का नाम बहुत लंबा लगता है - कम करने के लिए विधि को रिफलेक्टर करें।


1

यह बहुत लंबा है जब विधि का नाम दूसरी रेखा पर लपेटता है और विधि को कॉल लाइन पर एकमात्र चीज है और मार्जिन के बहुत करीब शुरू होता है। आपको उन लोगों की स्क्रीन के औसत आकार को ध्यान में रखना होगा जो इसका उपयोग कर रहे होंगे।

परंतु! अगर नाम बहुत लंबा लगता है तो शायद बहुत लंबा है। इसके चारों ओर जाने का तरीका आपके कोड को इस तरह से लिखना है कि आप एक संदर्भ में हैं और नाम छोटा है लेकिन अन्य संदर्भों में दोहराव है। यह ऐसा है जब आप किसी के पूर्ण नाम के बजाय अंग्रेजी में "वह" या "वह" कह सकते हैं।


1

यह बहुत लंबा है जब यह बहुत ही मौखिक रूप से बताता है कि चीज क्या है।

उदाहरण के लिए, ये नाम कार्यात्मक रूप से समतुल्य हैं।

जावा में: java.sql.SQLIntegrityConstraintViolationException

पायथन / Django में: django.db.IntegrityError

अपने आप से, एक एसक्यूएल / डीबी पैकेज में पूछें कि आप कितनी अधिक अखंडता त्रुटियों के साथ आ सकते हैं? ;) इसलिए db.IntegrityErrorपर्याप्त है।


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

0

एक पहचानकर्ता का नाम बहुत लंबा होता है जब वह आपके जावा कंपाइलर को संभाल सकता है।


3
क्या?! मैं यह नहीं देखता कि मुझे इसके लिए क्यों अपमानित किया गया। सवाल सिर्फ एक पर्याप्त एक आवश्यक शर्त के लिए नहीं पूछा था!
.केलमैन

0

यहाँ देखने के दो तरीके या बिंदु हैं: एक यह है कि यह वास्तव में कोई फर्क नहीं पड़ता कि विधि का नाम कितना लंबा है, जब तक कि यह वर्णन करने के लिए जितना संभव हो उतना संभव है कि विधि क्या कर रही है (जावा सर्वोत्तम मूल नियम का अभ्यास करता है)। दूसरी ओर, मैं flybywire पोस्ट से सहमत हूं। हमें अपनी बुद्धि का उपयोग विधि नाम को जितना संभव हो उतना कम करने की कोशिश करने के लिए करना चाहिए, लेकिन इसे कम किए बिना वर्णनात्मकता है। वर्णनात्मकता अधिक महत्वपूर्ण है :)


0

एक नाम बहुत लंबा है अगर यह:

  • पढ़ने के लिए 1 सेकंड से अधिक समय लगता है
  • आपके JVM के लिए आवंटित की तुलना में अधिक RAM लेता है
  • कुछ बेतुका नाम दिया है
  • यदि एक छोटा नाम सही अर्थों में है
  • यदि यह आपके IDE में घूमता है

ईमानदारी से नाम केवल डेवलपर्स को अपने उद्देश्य को व्यक्त करने की आवश्यकता है जो इसे सार्वजनिक एपीआई विधि के रूप में उपयोग करेंगे या आपको छोड़ने के बाद कोड को बनाए रखना होगा। बस KISS याद (यह आसान बेवकूफ रखने के लिए)

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