জাভাস্ক্রিপ্ট নামকরণের সম্মেলনগুলি [বন্ধ]


257

আমি জানি যে নামকরণ কনভেনশন জাভাস্ক্রিপ্টের জন্য সেরা এটি সম্পর্কে প্রচুর বিতর্ক রয়েছে (সম্ভবত বিতর্ক নয় তবে যুক্তি কমপক্ষে)।

আপনি কীভাবে আপনার ভেরিয়েবল, ফাংশন, অবজেক্ট এবং এর নাম রাখবেন?

আমি এ বিষয়ে আমার নিজস্ব চিন্তাভাবনা ছেড়ে দেব, কারণ আমি জেএস দীর্ঘকাল ধরে না করে (কয়েক বছর, কেবল), এবং আমাদের প্রকল্পগুলিতে কাজ করার জন্য নামকরণের কনভেনশন সহ একটি ডকুমেন্ট তৈরি করার অনুরোধ পেয়েছিলাম । সুতরাং আমি চারপাশে (গুগল-ইনগিং) খুঁজছি, এবং এখানে অনেকগুলি ভিন্ন মতামত রয়েছে।

আমি জেএস-এর উপর যে বইগুলি পড়েছি সেগুলিও বিভিন্ন নামকরণের কনভেনশনগুলি নিজেরাই ব্যবহার করে তবে তারা সকলেই এই বিষয়ে একমত হয়: "আপনার পছন্দ অনুসারে কী সন্ধান করুন এবং এতে আঁকুন।" তবে এখন যেহেতু আমি এতদূর পড়েছি, আমি দেখতে পেয়েছি যে আমার এখনকার অভ্যাসের চেয়ে কিছু অন্যান্য পদ্ধতি পছন্দ হয়েছে।


মধ্যে জাতীয় সাধারণ জ্ঞান নেমিং কনভেনশন করার একটি আপ-টু-ডেট গাইড: robinwieruch.de/javascript-naming-conventions
রবিন Wieruch

উত্তর:


202

আমি জাভাস্ক্রিপ্টের জন্য ডগলাস ক্রকফোর্ডের কোড কনভেনশনগুলি অনুসরণ করি । এই সম্মেলনগুলি অনুসরণ করে যাচাই করতে আমি তার জেএসলিন্ট সরঞ্জামটিও ব্যবহার করি ।


30
জেএসলিন্ট অনেক বিকাশকারীদের জন্য খুব র‌্যাডিক্যাল এবং সীমাবদ্ধ হতে পারে , তারপরে জেএসহিন্ট আরও ভাল পছন্দ হতে পারে।
পাভেল হোদেক

7
ক্রকফোর্ড এই স্তরের বিশদে যায় না, তবে মূলধন দিয়ে শুরু হওয়া পরিবর্তনশীলগুলির কী হবে, কারণ তারা একটি সংক্ষিপ্ত বিবরণ উল্লেখ করে - প্রথম বর্ণটি বা পুরো সংক্ষিপ্ত আকারটি ছোট করা উচিত? উদাহরণ: ECBhandleবনাম ecbHandle( ইসিবি মানে কী তা বিবেচনা করে না )।
ড্যান ড্যাসক্লেস্কু

13
যদিও এটি একটি ভাল লিঙ্ক, আমি বিশ্বাস করতে পারি না "লিঙ্ক উত্তর" এর এত বেশি ভোট রয়েছে। আপনি অন্তত লিঙ্কযুক্ত পৃষ্ঠার প্রাসঙ্গিক অংশগুলি নিষ্কাশন করতে এবং ফর্ম্যাট করতে পারেন।
এড্রিয়েন

2
আমি মনে করি তিনি লিঙ্কটি দিয়ে ভাল করছেন। আপনি যদি উদ্বিগ্ন থাকেন তবে আপনার পোস্টটি সম্পাদনা করা উচিত।
nckbrz

4
আমি সত্যিই ক্রকফোর্ডের দিকে তাকিয়ে আছি তবে তার কোড কনভেনশনগুলি খুব পুরানো বলে মনে হচ্ছে। আমি তালিকাটি আরও নীচে @ পাভেলহোডেকের দিকে তাকানোর পরামর্শ দেব
পার হর্নশেজ-শিয়েরব্যাক

160

জিফ যেমন বলেছেন, ক্রকফোর্ড যা বলেছেন তা ভাল good

আমি একমাত্র ব্যতিক্রম অনুসরণ করি (এবং ব্যাপকভাবে ব্যবহৃত দেখেছি) হ'ল jQuery (বা যা কিছু লাইব্রেরি) অবজেক্টটি নির্দেশ করতে $ বর্ণটি ব্যবহার করা। যেমন

var footer = document.getElementById('footer');

var $footer = $('#footer');


7
আমি এটির জন্যও ব্যবহার করি। আমি প্রায়শই লোককে দেখতে পাই an কোনও জিনিসের ক্যাশেড অনুলিপি নির্দেশ করতে। আমি সবসময় ধরে নিয়েছিলাম এটি কথায় নাটক ছিল। ক্যাশে> "নগদ"> $
শ্যান হুইনারি

1
আপনি অ্যাংুলারজেএস ব্যবহার করছেন তবে এটি সর্বোত্তম ধারণা হতে পারে না - মূল পরিষেবাগুলি 'with' এর সাথে
উপস্থাপিত হয়

2
আমি ভেরিয়েবল নামের বিশেষ অক্ষর ব্যবহার না করার জন্য সুপারিশ করছি। প্রচুর ফ্রেমওয়ার্ক ব্যবহার করে - বিশেষত।
nckbrz

1
@nixxbb এটি ঠিক আছে যদি আপনি যথাযথভাবে স্কোপ ভেরিয়েবলগুলি করেন - যা ভাল ফ্রেমওয়ার্কগুলিও করে do
আন্দ্রে ফিগুয়েরেদো

1
আমি ক্রকফোর্ডের গিল্ডলাইনসটিতে উল্লেখ করেছি "নামের প্রথম বা শেষ চরিত্র হিসাবে আন্ডারবার _ ব্যবহার করবেন না sometimes এটি কখনও কখনও গোপনীয়তা নির্দেশ করার উদ্দেশ্যে করা হয়"। আমি ব্যক্তিগতভাবে ব্যক্তিগত সদস্যদের নির্দেশ করতে আন্ডারবার ব্যবহার করি। এটা কি খারাপ অভ্যাস? বিকল্প আছে?
ইয়ান জি

112

আপনি এই গুগল জাভাস্ক্রিপ্ট স্টাইল গাইড অনুসরণ করতে পারেন

সাধারণভাবে, ফাংশন নেমস লাইকটি, ভেরিয়েবল নামস লাইকটি, ক্লাসনেমস লাইক এটি, এনামনেমস লাইকটি, মেথডনেমস লাইকটি, এবং সিমবোলিক_সনস্ট্যান্টস_লাইকি_এটি ব্যবহার করুন।

সম্পাদনা: জাভাস্ক্রিপ্ট স্টাইল গাইড এবং বিউটিফায়ার্সের দুর্দান্ত সংগ্রহ দেখুন ।


15
আমি নিশ্চিত নই যে আমি এটির সাথে পুরোপুরি একমত হই কিনা, তারা বিবেচনা করে যে তারা ডার্ট এবং জিডাব্লুটিটি বিকাশ করেছে (ক্রোম এক্সটেনশানগুলি জাভাস্ক্রিপ্ট এপিআইও খুব জাভা-জাতীয়)। গুগলের কিছু টিমের কাছে জাভাস্ক্রিপ্ট বিকাশের সেরা উপায় হতে পারে এটি অন্য কোনও ভাষায় লেখা।
Badunk

2
আমি সর্বদা গুগলের ব্যক্তিগত নামকরণ কনভেনশনটি খুঁজে পেয়েছি বিজোড় পরিবর্তে _fooBarতারা fooBar_- মাইক্রোসফট এটা ঠিক: asp.net/ajaxlibrary/act_contribute_codingStandards.ashx
ড্যানিয়েল Sokolowski

3
নিবন্ধন করুন যদি আপনি একটি আন্ডারস্কোর সহ প্রচুর পরিমাণে ভেরিয়েবলের উপসর্গ করেন, তবে প্রতিবার আপনি এই ভেরিয়েবলগুলি অ্যাক্সেস করার সময় আপনাকে কেবল টাইপ করতে হবে। এটির শেষে, আপনার ইন্টেলিজেন্স তালিকাটি আরও পরিষ্কার দেখাচ্ছে এবং আপনার যা প্রয়োজন তা খুঁজে পেতে এটি খানিকটা দ্রুত quick
FreeAsInBeer

@ ফ্রিএএসআইনবিয়ার অতিরিক্ত চরিত্র সম্পর্কে সত্য তবে এটির দ্রুত আমি মনে করি না। _প্রাইভেট ওয়ার উল্লেখ করার সময় টাইপ করার সাথে সাথে ফলাফলগুলি সীমিত করার সাথে সাথে ইন্টেলিজেন্স হতে পারে; শেষ পর্যন্ত এটি ব্যক্তিগত পছন্দ বিবেচনা।
ড্যানিয়েল সোকলোভস্কি

1
স্টাইল গাইডের লিঙ্কে লিঙ্ক করার জন্য ধন্যবাদ। আমি জানি না যে কেউ একচেটিয়াভাবে অনুসরণ করার যোগ্য কিনা বা কীভাবে এখনও সিদ্ধান্ত নেবেন যে কোনটি আমার একত্রিত করা উচিত। তবে কোথায় এক জায়গায় বেশ কয়েকটি সন্ধান করতে হবে তা জানা সত্য on
রজার_১

9

আমি যে কনভেনশনটি চেষ্টা করে দেখতে চাই তা হ'ল 'উপসর্গের সাথে স্থির মডিউলগুলির নামকরণ। এটা দেখ. আমি যখন অন্য কারও মডিউল ব্যবহার করি তখন এটি কীভাবে আমার ব্যবহার করার কথা। উদাহরণ:

define(['Lightbox'],function(Lightbox) {
  var myLightbox = new Lightbox() // not sure whether this is a constructor (non-static) or not
  myLightbox.show('hello')
})

আমি একটি কনভেনশন চেষ্টা করার কথা ভাবছি যেখানে স্থির মডিউলগুলি তাদের অস্তিত্বকে নির্দেশ করতে '' 'ব্যবহার করে। এর চেয়ে ভাল উপায় কি কেউ দেখেছেন? এই মত দেখতে হবে:

define(['theLightbox'],function(theLightbox) {
  theLightbox.show('hello') // since I recognize the 'the' convention, I know it's static
})

6

আমি মনে করি কিছু বাক্য গঠন সীমাবদ্ধতা ছাড়াও; নামকরণের সম্মেলনগুলির যুক্তিগুলি খুব বেশি ভাষা স্বাধীন। আমি বলতে চাইছি, সি_স্টাইল_ফানশনস এবং জাভালাইক ক্যামেলকেসের পক্ষে যুক্তিগুলি সমানভাবে বিপরীত উপায়ে ব্যবহার করা যেতে পারে, এটি কেবল ভাষা ব্যবহারকারীরাই ভাষার লেখকদের অনুসরণ করতে ঝোঁক।

এই বলে আমি মনে করি, বেশিরভাগ গ্রন্থাগারগুলি জাভার ক্যামেলকেসের সরলকরণ প্রায় অনুসরণ করে। আমি ডগলাস ক্রকফোর্ড আমার পক্ষে যথেষ্ট স্বাদযুক্ত পরামর্শ পেয়েছি।


2

এটি একটি স্বতন্ত্র প্রশ্ন যা আপনি কীভাবে কাজ করছেন তার উপর নির্ভর করতে পারে। কিছু লোক ভেরিয়েবলের প্রারম্ভের সময় ভেরিয়েবল টাইপ করতে পছন্দ করেন, যেমন "স্ট্রিম_মেসেজ"। এবং কিছু লোক তাদের শব্দগুলির ("মাই_মেসেজ") এর মধ্যে আন্ডারস্কোর ব্যবহার করতে পছন্দ করেন অন্যরা তাদের উচ্চ-অক্ষরের অক্ষর ("মাইমেসেজ") দিয়ে আলাদা করতে পছন্দ করেন।

আমি প্রায়শই অন্যান্য লোকের সাথে বিশাল জাভাস্ক্রিপ্ট লাইব্রেরি নিয়ে কাজ করছি, সুতরাং ফাংশন এবং ভেরিয়েবলগুলি (ফাংশনের অভ্যন্তরে ব্যক্তিগত ভেরিয়েবলগুলি বাদ দিয়ে) "গেস্টবুক_মেসেজ" হিসাবে দ্বন্দ্ব এড়ানোর জন্য পরিষেবাটির নামটি শুরু করতে পারে।

সংক্ষেপে: ইংরাজী, লোয়ার-কেসড, সু-সংগঠিত ভেরিয়েবল এবং ফাংশনের নামগুলি আমার মতে পছন্দনীয়। নামগুলি সংক্ষিপ্ত হওয়ার পরিবর্তে তাদের অস্তিত্ব বর্ণনা করতে হবে।


2
"সুতরাং ফাংশন এবং ভেরিয়েবল (ফাংশনের অভ্যন্তরে ব্যক্তিগত ভেরিয়েবলগুলি বাদ দিয়ে) দ্বন্দ্ব এড়ানোর জন্য পরিষেবাটির নামের সাথে শুরু হয়েছিল," এই বিবৃতিটি সঠিক নয় । আপনার কাছে "নেমস্পিড" ফাংশন এবং অবজেক্টগুলি থাকতে পারে যা একাধিক জাভাস্ক্রিপ্ট ফ্রেমওয়ার্কের মাধ্যমে রক্তপাত না করে। এমআইএক্স 11
ক্রিস মেরিসিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.