জাভাস্ক্রিপ্টে, এর আন্ডারস্কোরটির অর্থ কী?


85
var Gallery = Backbone.Controller.extend({
    _index: null,
    _photos: null,
    _album :null,
    _subalbums:null,
    _subphotos:null,
    _data:null,
    _photosview:null,
    _currentsub:null,
    routes: {
        "": "index",
        "subalbum/:id": "subindex",
        "subalbum/:id/" : "directphoto",
        "subalbum/:id/:num" : "hashphoto"
    },
    initialize: function(options) {
        var ws = this;
        if (this._index === null){
            $.ajax({
                url: 'data/album1.json',
                dataType: 'json',
                data: {},
                success: function(data) {
                    ws._data = data;
                    ws._photos =
                    new PhotoCollection(data);
                    ws._index =
                    new IndexView({model: ws._photos});
                    Backbone.history.loadUrl();
                }
            });
            return this;
        }
        return this;
    },
    //Handle rendering the initial view for the
    //application
    index: function() {
        this._index.render();
    },

আমি এখানে backbone.js এর একটি টিউটোরিয়াল পড়ছি: http://addyosmani.com/blog/building-spas-jquerys-best-friends/

আন্ডারস্কোরগুলি কী কী? (_আইডেক্স, _ফোটস, _্যালবাম) এগুলি কেন ব্যবহার করবেন?


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

উত্তর:


164

এর অর্থ বেসরকারী ক্ষেত্র বা ব্যক্তিগত পদ্ধতি। পদ্ধতিগুলি যা কেবলমাত্র অভ্যন্তরীণ ব্যবহারের জন্য।

তাদের ক্লাসের বাইরে প্রার্থনা করা উচিত নয়।

ব্যক্তিগত ক্ষেত্রে অভ্যন্তরীণ ব্যবহারের জন্য ডেটা থাকে contain

এগুলি পড়ার বা ক্লাসের বাইরে থেকে সরাসরি (সরাসরি) লেখা উচিত নয়।

দ্রষ্টব্য: এটি লক্ষ করা খুব গুরুত্বপূর্ণ যে কেবলমাত্র একটি চলকটিতে আন্ডারস্কোর যুক্ত করা এটি ব্যক্তিগত করে তোলে না, এটি কেবল একটি নামকরণের সম্মেলন।


4
কমপক্ষে, ব্যক্তিগত ক্ষেত্রের ধারণাটি রয়েছে তবে সেগুলি সত্যই ব্যক্তিগত নয়, আপনি যে কোনও উপায়ে এগুলি অ্যাক্সেস করতে পারেন। উপরের কোডটির লেখক কেবল তাদের ব্যক্তিগত বলে বোঝাতে চেয়েছিলেন। এখানেই শেষ.
স্যান্ডার

আশ্চর্যজনক, জানেন না কেন আমাকে এটি দেখার জন্য এত দীর্ঘ সময় লেগেছে! ধন্যবাদ
droid-জেলা

21

যতদূর আমি সচেতন, এটি সাধারণত একটি ব্যক্তিগত ভেরিয়েবল নির্দেশ করতে ব্যবহৃত হয় (তবে আসলে কোনও গোপনীয়তা দেয় না, কেবল একটি সম্মেলন)।

এটি এখানে সংক্ষেপে আলোচনা করা হয়েছে, যদিও তাদের বিরুদ্ধে পরামর্শ দেওয়া হচ্ছে: http://javascript.crockford.com/code.html


4
আমি লিঙ্কটি পছন্দ করি: "এমন কনভেনশনগুলি এড়িয়ে চলুন যেগুলি দক্ষতার অভাব দেখায়।" :-)
আরেক

আমি এগুলি ডিবাগ করার সময় শর্টকাট হিসাবে ব্যবহার করি, বিশেষত প্রতিশ্রুতি এবং অন্যান্য অ্যাসিঙ্ক স্টাফ সহ। উদাহরণস্বরূপ, আমার অবজেক্টের কিছু বৈশিষ্ট্য অ্যাক্সেস করার "অফিসিয়াল" উপায় হতে পারে myObj.getSmePromise().then( function(o) { do stuff } );তবে এটি ক্রোম কনসোলে টাইপ করতে ব্যথা হতে পারে , তাই আমি myObj._someValueবুঝতে পেরেছি যে "উপযুক্ত কোড" আসলে এটি অ্যাক্সেস করতে পারে না - এটি তবে আমার সহকর্মীদের বিলাসিতাও এই সম্মেলনটি জানা, যদি আপনি পরবর্তী jQuery / লডাশা / কৌনিক / প্রতিক্রিয়া লিখছেন বা যাই হোক না কেন আমি আপনার সমস্ত ব্যবহারকারীদের এটি জানার বা সম্মানের উপর নির্ভর করি না!
ফ্রেডল

8

এটি যখন _varnameভেরিয়েবল নামের কেবলমাত্র একটি অংশের মতো ব্যবহৃত হয় এবং এর কোনও জাভাস্ক্রিপ্ট অর্থ নেই। বিকাশকারীরা ভেরিয়েবলের অর্থ বা সুযোগকে বোঝাতে এটি ব্যবহার করে। এই ক্ষেত্রে দেখে মনে হচ্ছে এটি বিকাশকারীকে বলছে যে এই ভেরিয়েবলটি স্থানীয় বা ব্যক্তিগত ভেরিয়েবল হওয়া উচিত।

কয়েকটি বিষয় লক্ষণীয়, এই বিশেষ উদাহরণে ব্যবহার _.varnameকরে আন্ডারস্কোর.জেএস লাইব্রেরি সহ একটি পরিবর্তনশীল বা ফাংশনটি বোঝায়। _varnameআন্ডারস্কোর অবজেক্টটি ধারণ করে একটি ভেরিয়েবলকে বোঝাতে ব্যবহার করতে পারে , একইভাবে আমাদের অফিসে, আমরা $varnameএকটি জেকারি অবজেক্টযুক্ত ভেরিয়েবলকে চিহ্নিত করতে ব্যবহার করি ।


4

এটি সম্ভবত অভ্যন্তরীণ / ব্যক্তিগত সম্পত্তি চিহ্নিত করতে ব্যবহৃত হয়। পাইথনের যেমন আন্ডারস্কোরের সাথে একটি ভেরিয়েবলের উপসর্গ তৈরি করা বিকাশকারীদের জানার একটি সহজ উপায় যে পরিবর্তনশীলটি অভ্যন্তরীণ এবং তারা এটির সাথে আরও ভালভাবে চলাচল না করে (এবং যদি তা করে তবে জড়িত লাইব্রেরির একটি সামান্য আপডেটও জিনিসগুলি ভেঙে দিতে পারে)।


2

সাধারণত _ব্যবহারকারী / প্রোগ্রামারকে বলতে এটি ব্যবহৃত হয় যে এটি প্রশ্নে একটি ব্যক্তিগত / সুরক্ষিত পরিবর্তনশীল।


0

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

একটি ব্লগে আমি সম্প্রতি একটি সফটওয়্যার ইঞ্জিনিয়ার ম্যানেজারের মুখোমুখি এসেছি, যিনি বলেছিলেন: " আন্ডারস্কোর নামকরণ কনভেনশনটি এক নজরে বলতে গেলে এটি সহজেই সহজ করে তোলে, ভেরিয়েবল ফাংশনটি পাবলিক বা বেসরকারী হওয়ার উদ্দেশ্যে করা হয়েছে কিনা " " আমার প্রতিক্রিয়াটি হ'ল: "মন্তব্যগুলি ছবিগুলির মতো, এক্ষেত্রে সেগুলির মূল্য এক হাজার আন্ডারস্কোর।

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

মনে রাখবেন, এমন কিছু সরঞ্জাম রয়েছে যা "প্রোডাকশন রিলিজ" এর জন্য মন্তব্যগুলি এবং কনসোলের বিবৃতি সরিয়ে নিতে পারে। বলা হচ্ছে, উত্স মানচিত্রের ব্যবহার সময় এবং সম্পদের অপচয়ও। আপনার প্রকাশের জন্য প্রস্তুত না হওয়া অবধি ছোট করবেন না (যেমন দেব বিল্ড (কোনও মিনিফিকেশন, মন্তব্য এবং কনসোলের বিবৃতি রাখবেন না)), বিল্ড রিলিজ করুন (মন্তব্যগুলি সরান, এবং কনসোলের বিবৃতি সরিয়ে দিন এবং দেব বিল্ডকে মিনিফাইজ করুন Build মানের কোড, কেবল এটি মুক্তির জন্য প্রস্তুত করুন এবং এটি স্থাপন করুন)।


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

0

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

আমি সহকর্মীদের কোড দ্বারা বিভ্রান্ত হয়ে পড়েছিলাম যা কার্যকরভাবে এটিতে রয়েছে (তবে একটি পৃথক গ্রন্থাগারে খুব গভীরভাবে সমাহিত করা হয়েছে):

class x { 
  constructor(id) {this._id = id} 
  get id() {return this._id}
}
let y = new x(3)

এখন আপনার y.idএবং y._idসেই কাজ উভয়ই আছে এবং একই মানটি ফিরে আসবে। তবে আপনি যদি console.log(y)এটি করেন তবে কেবল _idকীটি প্রদর্শিত হবে ।

এখানে চিত্র বর্ণনা লিখুন

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