क्या एक ही नाम के सामान्य उद्देश्य के साथ दो बहुत अलग फाइलें देना एक बुरा अभ्यास है?


18

क्या एक ही सामान्य उद्देश्य के साथ दो अलग-अलग फ़ाइलों को एक ही नाम देना एक बुरा अभ्यास है, उन्हें अलग-अलग निर्देशिकाओं में अलग करना?

<script src="client_scripts/app/player_stats/generator.js"></script>
<script src="client_scripts/app/coach_settings/generator.js"></script>

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

वैकल्पिक रूप से, नाम की छोटी लंबाई की कीमत पर, मैं उपयोग कर सकता हूं:

<script src="client_scripts/app/player_stats/player_stats_generator.js"></script>
<script src="client_scripts/app/coach_settings/coach_settings_generator.js"></script>

7
लम्बे नाम! :)
मार्क जूला

2
statsgen.js,settingsgen.js
क्रोल्टन

1
सूखी! (यानी छोटे नाम)
पॉल ड्रेपर

1
स्वच्छ संहिता (यानी अब सार्थक नाम)
सोंगो

जवाबों:


36

अपने दो विकल्पों की लागत / लाभ अनुपात पर विचार करें:

  1. एक ही नाम का पुन: उपयोग भ्रम या नामकरण संघर्ष का कारण होगा? शायद नहीं, क्योंकि वे अलग-अलग फ़ोल्डर में हैं। "Player_stats / जनरेटर.js" नाम "player_stats_generator.js" के बराबर है। हालांकि, यदि आप देखते हैं, भविष्य में, आपकी जेएस फाइलों को एक ही निर्देशिका (तैनाती? मैं दुन्नो) में विलय करने का एक कारण है, तो यह अद्वितीय नाम देने के लिए एक अच्छा संकेतक होना चाहिए।

  2. क्या लंबे नामों का उपयोग करने में बहुत अधिक बाहरी टाइपिंग शामिल होगी? शायद ऩही। न केवल आपके लिए प्रोजेक्ट में कई जेएस आईडीई स्वत: पूर्ण फ़ाइलनाम हैं, यह एक कोड का टुकड़ा भी है जो संभवतः केवल लिखा है - अधिकतम - एक बार प्रति फ़ाइल। कोड जो बहुत टाइप हो जाता है वह js फ़ाइलों के अंदर वर्ग और फ़ंक्शंस है , और वे (उम्मीद है) संघर्ष नहीं करते हैं।

  3. डिबगिंग करते समय, किसी त्रुटि के बारे में आपको किस प्रकार की जानकारी मिलती है? यदि सबसे आम बग रिपोर्ट "34 की पंक्ति में त्रुटि <filename.js>" है, तो उन्हें अनूठे नाम देने पर विचार करें, क्योंकि केवल जनरेटर में त्रुटियों को प्राप्त होता है। जेएस और फिर परमात्मा की कोशिश करना, संदर्भ के माध्यम से, यह किस जनरेटर से परेशानी हो सकती है।


5
डिबगिंग js आमतौर पर पूरे फ़ाइल पथ को प्रिंट करता है।
बरगी

1
@Bergi जो ब्राउज़र (और संस्करण), IDE (यदि कोई हो), त्रुटि-लॉगिंग ढांचे और इतने पर निर्भर करता है।
अवनर शाह-कश्तन

22

एक व्यावहारिक मामले के रूप में, यदि आपका आईडीई टैब में फ़ाइल नाम दिखाता है, यदि आप प्रत्येक फ़ाइल के लिए एक ही नाम का उपयोग करते हैं, तो आप उन टैब के साथ समाप्त हो जाएंगे जो सभी एक ही नाम दिखाते हैं। यह बहुत कष्टप्रद हो सकता है। एक परियोजना जिसे मैंने संभाला है, उस समस्या को बनाए रखा है, और यह एक बड़ा दर्द है कि 15 टैब खुले हैं, उनमें से आधे एक ही फ़ाइल नाम के साथ हैं।

इसलिए ... अधिक वर्णनात्मक नामों का उपयोग करें।


1
अधिकांश आधुनिक टेक्स्ट एडिटर टैब में पथ दिखाएंगे यदि फ़ाइलों का नाम समान है।
किमीयाशिरो

बेशक, कभी-कभी एक ही नाम [उदाहरण के लिए कई सर्वरों index.html] पर कई फ़ाइलों के लिए यह आवश्यक है । मैं अपने आप को उन कार्यक्रमों से परेशान करता हूं जो किसी विशेष फ़ाइल से जुड़े पथ को निर्धारित करना मुश्किल बनाते हैं।
सुपरकैट

1
@kmiyashiro - शायद ऐसा है, लेकिन अगर आपके पास कई फाइलें खुली हैं, तो टैब को उस आकार (चौड़ाई) में कम किया जा सकता है, जहां आप ज्यादातर केवल फ़ाइल नाम देखते हैं। फिर आपको प्रत्येक टैब पर अपने माउस को हमेशा हॉवर करना होगा और पूर्ण पथ / फ़ाइल को प्रदर्शित करने के लिए "टूलटिप" की प्रतीक्षा करनी होगी। यदि आपके पास केवल कुछ फाइलें खुली हैं, और केवल एक डुप्लिकेट नाम का दुर्लभ मामला है, तो यह संभवतः स्वीकार्य है। लेकिन बहुत सारी फाइलों के साथ, यह बहुत कष्टप्रद हो सकता है।
केविन फेगन

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

1
अधिक वर्णनात्मक नामों का उपयोग करना, हालांकि कष्टप्रद हो सकता है ... जब आप some_super_long_descriptor_that_needs_more_description.jsइसे अलग करने के लिए some_super_long_descriptor_that_needs_more_cowbell.js
मिलते हैं

12

यहां एक स्पष्ट निर्णय लेने वाला कारक है: DRY (अपने आप को दोहराएं नहीं)।

हर फ़ाइल का नाम अलग नहीं होना चाहिए; यही रास्ते हैं । क्या आप सोच सकते हैं कि आपके कंप्यूटर पर कितने अलग-अलग सिस्टम या प्रोग्राम फाइल्स हैं? क्या होगा यदि उनमें से प्रत्येक के पास एक अनूठा नाम होना चाहिए? कुछ बिंदु पर, हम केवल फ़ाइल नाम को पथ की प्रतिलिपि बना रहे हैं।

यदि client_scripts > app > player_statsवास्तव में संदर्भ में एक जावास्क्रिप्ट फ़ाइल का सबसे अच्छा विवरण है generator, तो यह पथ होना चाहिए client_scripts/app/player_stats/generator.js

यह सवाल programmers.stackexchange.com/questions/ 250481 पर है । वहाँ भी है serverfault.com/questions/ 250,481250481यह प्रोग्रामर के प्रश्नों के संदर्भ में एक बात है, और सर्वर दोष के प्रश्नों के संदर्भ में कुछ और है।

पथ (या URL) अच्छे हैं क्योंकि वे नेस्टेड पहचानकर्ता हैं। चलो उन्हें इस तरह से उपयोग करते हैं :)


7

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

अच्छे नाम अब बाद में रिफ्लेक्टर को बचाते हैं या बाद में और भी बड़ी त्रुटियों को दूर करते हैं।

क्लीन कोड और कोड कम्प्लीट की पुस्तकें व्हाट्सएप के रूप में काफी विस्तार में जाती हैं और अच्छे नामकरण के कारण लेकिन वे केवल स्रोत के रूप में नहीं हैं।


यह उत्तर इस विशेष उदाहरण पर अच्छी तरह से लागू होता है, लेकिन यह सामान्य प्रश्न को संबोधित नहीं करता है।
पॉल ड्रेपर

3

यह उस तकनीक पर निर्भर करता है, जिसके साथ आप काम कर रहे हैं। नामों को आइटम की पहचान करनी चाहिए, और पथ को संदर्भ की पहचान करनी चाहिए। मैं मानता हूं कि अच्छा नामकरण महत्वपूर्ण है लेकिन हे, पथ भी नाम हैं। लेकिन व्यावहारिक दृष्टिकोण से, यदि आप जावास्क्रिप्ट जैसी किसी चीज का उपयोग कर रहे हैं, तो अंत वस्तुओं के लिए अधिक सटीक नाम रखना बेहतर है। यदि आप ऐसे उपकरणों के साथ काम कर रहे हैं जो इसे ध्यान में रखते हैं, जैसे कि पायथन , पुनर्संयोजित तरीका अलग-अलग पथ (मॉड्यूल, नेमस्पेस) के साथ एक ही नाम का उपयोग करना होगा। अगर आप जावा को देखें, आपको एक ही नाम और विभिन्न पैकेजों के साथ कक्षाएं भी मिलेंगी। कोई और आगे बढ़ सकता है और कह सकता है कि विधियों को कक्षा के संदर्भ में क्रियाओं का नाम दिया गया है, और हमारे पास अलग-अलग कक्षाओं में समान नाम हैं, जिन्हें स्वयं एक ही नाम दिया जा सकता है, लेकिन अलग-अलग पैकेजों में रखा जा सकता है। अजगर का ज़ेन कहता है:

नाम स्थान एक महान विचार का सम्मान कर रहे हैं - चलो उन में से अधिक करते हैं!

लेकिन जावास्क्रिप्ट में यह quirks और perks है इसलिए मैं आपको विभिन्न नामों के साथ जाने की सलाह दूंगा (भले ही फाइलें अलग-अलग रास्तों में हों)। इसके अलावा आप जावास्क्रिप्ट पैटर्न में मॉड्यूल के लिए देख सकते हैं जो आपको क्लीनर कोड लिखने में मदद कर सकता है:

    var playerStatsGenerator = player_stats.Generator();
    var coachSettingsGenerator = coach_settings.Generator();

आप अपना केक ले सकते हैं और इसे खा भी सकते हैं।

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