বেনামে ফাংশন বনাম jquery মধ্যে আরম্ভের জন্য পৃথক নামকরণ ফাংশন


9

ধরা যাক আমাদের কিছু কোড রয়েছে যা কোনও পৃষ্ঠা লোড হওয়ার পরে জিনিসগুলিকে আরম্ভ করার জন্য ব্যবহৃত হয় এবং এটি দেখতে এরকম দেখাচ্ছে:

function initStuff() { ...}
...
$(document).ready(initStuff);

InitStuff ফাংশনটি কেবল স্নিপেটের তৃতীয় লাইন থেকে কল করা হয়। কখনও না. তাই সাধারণত লোকেরা এটিকে একটি বেনামে কলব্যাকের মধ্যে রাখে:

$(document).ready(function() { 
    //Body of initStuff
});

কোডটিতে কোনও উত্সর্গীকৃত স্থানে ফাংশনটি পঠনযোগ্যতার সাথে সত্যই সহায়তা করে না, কারণ রেড অন কল করার সাথে () এটি স্পষ্ট করে তোলে যে এটি আরম্ভের কোড।

একে অপরের চেয়ে বেশি পছন্দ করার মতো অন্য কোনও কারণ আছে কি?


4
প্রথমটি বিশ্বব্যাপী নেমস্পেসকে বিশৃঙ্খলা করে। দ্বিতীয়টি চয়ন করুন।
রিওয়ালক

উত্তর:


10

@ স্টারগাজার 12১২ হিসাবে যেমন উল্লেখ করা হয়েছে, প্রথমটি বিশ্বব্যাপী নেমস্পেসকে বিশৃঙ্খলা করে, তাই দ্বিতীয়টি হ'ল বিজয়ী আইএমএইচও। এখন, এই বলে যে আপনি দ্বিতীয় উদাহরণে একটি বেনাম ফাংশন ব্যবহার করছেন, আপনার ডিবাগারের কলস্ট্যাকটি অকেজো হবে এবং আপনি যে ডিবাগারটি ব্যবহার করছেন তার উপর নির্ভর করে পৃথক পৃথক ফলাফল পাবেন। সাধারণত, আমি যা দিয়ে শেষ করছি তা হ'ল:

$(document).ready(function MODULE_init() { 
    //Body of initStuff
});

এইভাবে, বিশ্বব্যাপী নেমস্পেসটি বিশৃঙ্খলা সৃষ্টি করে না এবং আপনার কাছে একটি দরকারী কলস্ট্যাক রয়েছে।

আমি উপরের কনভেনশনটি সমস্ত বেনামে (ভাল, বেনামে নয়;)) ফাংশন সংজ্ঞাতে ব্যবহার করার ঝোঁক। এটি একটি কনভেনশন যা ফায়ারফক্স জেএস কোডের মাধ্যমে ব্রাউজ করার সময় আমি পেয়েছি।

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


ডিবাগিং উল্লেখ করার জন্য +1। নোড.জেএস কোডে আমি প্রায়শই "নামকৃত কলব্যাকস" ব্যবহার করি (এই শব্দটি আসলে বিদ্যমান কিনা তা জানি না), তাই আমিও অনুমান করি এটি ভাল অনুশীলন।
অলিভার ওয়েইল

kangax.github.com/nfe নামযুক্ত ফাংশন এক্সপ্রেশন - এই নিবন্ধটি আপনাকে তাদের সম্পর্কে জানতে চেয়েছিল এমন সমস্ত কিছু বলে দেয়।
শান ম্যাকমিলান

7

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

ইউনিট পরীক্ষার বিষয়ে, প্রথম পদ্ধতির আরও ভাল হবে, কারণ আপনি initstuffবিচ্ছিন্নভাবে ফাংশনটি পরীক্ষা করতে সক্ষম হবেন ।


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

3

আমি প্রথমটির পাঠ্যযোগ্যতা / ডিবাগিং / পরীক্ষার জন্য যাব etc. ইত্যাদি your আমি পল আইরিশ প্রস্তাবিত হিসাবে অবজেক্ট স্বরলিপি শৈলী ব্যবহার করি ( http://paulirish.com/2009/perf/ এ 13-15 স্লাইড দেখুন )

var MYPAGE = {
  onReady : function(){
  // init code
  },
  someOtherCallback : function(){}
};

jQuery(document).ready(MYPAGE.onReady);

2

গ্লোবাল নেমস্পেস যা আমি পছন্দ করি না তা ছড়িয়ে না দিয়ে ডিআইডি পদ্ধতিতে নিবন্ধকরণের আমার তৃতীয় উপায়ও রয়েছে:

jQuery(function(){....});

এটি সংক্ষিপ্ত এবং DOM নথির মতো দেখতে এড়ানো

jQuery(document).ready(function(){...}); 

আছে।


+1: আমি মনে করি এটি স্ট্যান্ডার্ড অনুশীলন, তবে $আমার বিরোধী সংজ্ঞাগুলির সাথে কোনও সমস্যা এড়াতে আমি পছন্দ করি:jQuery(function($) {...});
কেভিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.