নোড.জেএস অ্যাপসের জন্য কোডিং স্টাইল গাইড? [বন্ধ]


130

নোড.জেএস এর জন্য কোডিং স্টাইল গাইড (বা একাধিক) আছে? যদি তা না হয় তবে শীর্ষস্থানীয় ওপেন সোর্স নোড প্রকল্পগুলি কীভাবে উদীয়মান শৈলীগুলি ব্যবহার করবে?

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

একটি কোডিং স্টাইল গাইড বা কোডিং কনভেনশনগুলিতে অন্তর্ভুক্ত হওয়া উচিত (তবে সীমাবদ্ধ নয়):

  • কোড লেআউট: ইনডেন্টেশন (2 স্পেস, 4 টি স্পেস, ট্যাব, ...), নিউলাইনস, লাইন ব্রেক, ইত্যাদি
  • হোয়াইটস্পেস, যেমন, "ফাংশন (আরগ)" বনাম "ফাংশন (আরগ)"
  • সেমিকোলন বা কোনও সেমিকোলন নয়, বিভিন্ন ঘোষণা, ...
  • নামকরণ, উদাহরণস্বরূপ, do_this () বনাম doThis (), বর্ণ_নাম বনাম varName, ...
  • নোড.জেএস এবং জাভাস্ক্রিপ্ট আইডিয়ামগুলি, যেমন, == বনাম ===, কলব্যাকের প্রথম আরগটি একটি ত্রুটিযুক্ত বস্তু, ...
  • মন্তব্য এবং ডকুমেন্টেশন
  • লিঙ্ক পরীক্ষক, ইউনিট পরীক্ষার কাঠামো, এর মতো সরঞ্জামগুলি ...

স্পষ্টতই এই বিষয়টি অত্যন্ত বিষয়গত, তবে আমি মনে করি পরিপক্ক হওয়ার প্রক্রিয়ায় একটি সাধারণ এবং বহুল স্বীকৃত কোডিং স্টাইলটি প্রতিষ্ঠা করা সম্প্রদায়ের একটি গুরুত্বপূর্ণ পদক্ষেপ। এছাড়াও, এটি কেবল স্বাদ সম্পর্কে নয়। বিশেষত, "ব্যবহারের পরিবর্তে == এর পরিবর্তে ==" নিয়মের কোডের মানের উপর প্রত্যক্ষ প্রভাব রয়েছে।


আমি অনুমান করি যে এটি বাস্তবায়িতভাবে আপনি যে "কাঠামো" ব্যবহার করেন তার উপর নির্ভর করে (যদি থাকে) তবে উদাহরণস্বরূপ আপনি spludo.com
উত্স /

4
"কারও কাছে কি স্টাইল গাইডের একটি ভাল সেট রয়েছে" বিষয়বস্তু হতে পারে বা নাও হতে পারে তবে "উদীয়মান শৈলীগুলি কি" অবশ্যই তা। আপনি ইতিমধ্যে ফেলিক্সের গাইডটি পেয়ে গেছেন, যা অবশ্যই আমি (কিছু ক্ষেত্রে দৃ strongly়ভাবে) এর দিকগুলির সাথে একমত নই এবং এর অন্যান্য দিকগুলির সাথে একমত আছি। আর এটাই সমস্যা। খুব খুব তাড়াতাড়ি এটি "না, আমি যে স্টাইলটি দেখছি তা ট্যাব ব্যবহার করে!" "না, আমি যে স্টাইলটি দেখছি তা চারটি স্পেস ব্যবহার করে!" "না, আমি যে স্টাইলটি দেখছি তা দুটি স্পেস ব্যবহার করে !" অবশ্যই, লোকেরা আসলে কী বোঝায় তা হ'ল "আমি যে স্টাইলটি পছন্দ করি" তা নয়, "আমি যে শৈলীটি দেখছি তা উদ্ভূত হয়"।
টিজে ক্রাউডার

2
@ টিজে ক্রাউডার আমি যে স্টাইলটি দেখছি তাতে কোন ফাঁকা জায়গা ব্যবহার করা হচ্ছে না!
রায়নস

+1 দুর্দান্ত প্রশ্ন। আমি আশা করি এই লিঙ্কগুলি আমি বহু বছর আগে পেয়েছি।
ব্রায়ান ডাউনিং

বিষয়গত প্রশ্ন।
নীলস অ্যাবিল্ডগার্ড

উত্তর:


120

আমি জেএসলিন্ট দ্বারা পরীক্ষিত কোডিং মানগুলি পর্যালোচনা করব বা এনপিএম (আইজাক স্লুইটারের) কোডিং স্ট্যান্ডার্ডের দিকে নজর দেব ।

আপনি উল্লেখযোগ্য নোড.জেএস কোডার দ্বারা ব্যবহৃত স্টাইলটিও দেখতে পারেন:

আমি ভাল পরিমাপের জন্য আমার সেখানে ফেলে দেব ;)

সম্পাদনা করুন: @ এলেনহার্ডের কাছ থেকে পরামর্শ

আইএমওতে কয়েকটি সুবর্ণ নিয়ম অনুসরণ করা উচিত:

  • কখনও ব্যবহার withবাeval
  • ===ওভার ব্যবহার করুন==
  • সর্বদা varউপযুক্ত স্কোপ সহ আপনার ভেরিয়েবলগুলি ঘোষণা করুন - বিশ্বব্যাপী সুযোগে ফ্যালব্যাক করবেন না
  • (function(){})()ব্রাউজারে যেমন সার্ভার-সাইড চালিত কোড প্রকাশের পরিকল্পনা করে থাকেন তবে আপনার অ্যাপটিকে বন্ধ করে গুটিয়ে নিন
  • errকলব্যাকগুলি প্রথম যুক্তি হিসাবে গ্রহণ করা উচিত এবং যদি তারা নিজেরাই যুক্তি হিসাবে কলব্যাক নেয় তবে এটি শেষ হওয়া উচিত, যেমন egcallback(err, param1, param2, callback)

ব্রেস এবং কীওয়ার্ডগুলির মধ্যে ইন্ডেন্টেশন, ব্যবধান এবং সেমিকোলন প্লেসমেন্ট সমস্ত পছন্দসই বিষয়।


2
উত্তর করার জন্য ধন্যবাদ. আমি ভাবছিলাম যে আপনি কেন রায়ান উল্লেখ করেন নি;)। তবে সরকারী নোড রেপো উইকি থেকে আমি বুঝতে পেরেছি যে তারা গুগলের জাভাস্ক্রিপ্ট স্টাইল গাইড অনুসরণ করে । আমি এর আগে কাউকে জানিনি ...
এলিয়েনহার্ড

15

শহরে একটি নতুন মান আছে।

স্ট্যান্ডার্ড স্টাইল ব্যবহার করুন ।

JS-মানক শৈলী


1
এটিতে কেন কেবল 3 টি আপগেট রয়েছে তা আমার কোনও ধারণা নেই ...
লুক

4
@ লুক "হয়ত কোনও সেমিকোলন" নিয়মের কারণে নয়। "স্ট্যান্ডার্ড" স্টাইল নামে পরিচিত এমন কোনও কিছুর জন্য বিজোড় পছন্দ বলে মনে হচ্ছে।
ড্যানিয়েল ইয়াঙ্কোভস্কি

কোন সেমিকোলন একটি ভাল ধারণা নয়। এটি কিছু মিনিফিকেশন ভঙ্গ করবে।
denov

এই standardপ্যাকেজটি সেমিকোলন পছন্দ করে না। আপনি যদি সেমিকোলন পছন্দ করেন তবে সেমিস্ট্যান্ডার্ড রয়েছে
হ্যাজনিক

10

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


3
ডগলাস ক্রকফোর্ডের "জাভাস্ক্রিপ্ট: দ্য গুড পার্টস" বইটি +1 এটি একটি সংক্ষিপ্ত / ছোট বইতে প্রচুর তথ্যের এক নরক পেয়েছে - একটি ভারী পাঠ্য, তবে আমি পড়ে সেরা বইগুলির মধ্যে একটি।
অ্যালেক্স কীস্মিথ

7

টার্মিনাল থেকে নোড ব্যবহার করার সময়, আপনার উত্স কোডের জন্য ইন্ডেন্টেশনের জন্য স্পেস ব্যবহার করা কার্যকর। অন্যথায়, "এখানে ত্রুটি" ক্যারেটটি আপ করবে না।

ট্যাব সহ:

        var preps = files.map(function(f) { 
            ^
TypeError: Cannot call method 'map' of null

স্পেস সহ:

        var preps = files.map(function(f) { 
                          ^
TypeError: Cannot call method 'map' of null

এটি কেবল ম্যাক সমস্যা হতে পারে তবে আমি সন্দেহ করব না।


ওপি একটি স্টাইল গাইড জিজ্ঞাসা করলেন। কিছু নির্দিষ্ট টিপ না।
পরাক্রম

@ মাইটিয়িয়াম সত্য, তবে ইনডেন্টেশন বিধিগুলি প্রায় প্রতিটি স্টাইল গাইডের একটি অংশ। হয়তো আমার বক্তব্য অপটিকে লিঙ্ক করবে এমন কিছু স্টাইল গাইডের মূল্যায়নে ওপিকে সহায়তা করতে পারে বা তার নিজস্ব স্টাইল গাইড বিকাশ করতে সহায়তা করতে পারে।
ড্যানিয়েল ইয়ানকোভস্কি

6

আমি যখন এই প্রশ্নটি জিজ্ঞাসা করেছি তখন অনেকক্ষণ হয়েছে ... এবং এর মধ্যে আমি এই দুর্দান্ত জাভাস্ক্রিপ্ট গাইডটি পেয়েছি:

ধারাবাহিক লেখার নীতি, আইডিয়োম্যাটিক জাভাস্ক্রিপ্ট

https://github.com/rwldrn/idiomatic.js/



2

কফি-স্ক্রিপ্টের জন্য, যেখানে খারাপ ইনডেন্টগুলি বোঝায় সংকলন ত্রুটি

ব্যবহার

:set tabstop=2
:set shiftwidth=2
:set expandtab

জনপ্রিয় কফি প্রকল্প, zombie, brunchindentations এই সেটআপ ব্যবহার করে।

সম্পাদনা:

আসলে, শুধু এটি ব্যবহার করুন! https://github.com/paulmillr/code-style-guides (এর অন্যতম প্রধান অবদানকারী brunch)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.