জাভাস্ক্রিপ্ট নামকরণ কনভেনশন


12

আমি জাভা ব্যাকগ্রাউন্ড থেকে এসেছি এবং জাভাস্ক্রিপ্টে নতুন আছি। আমি একাধিক জাভাস্ক্রিপ্ট পদ্ধতি একক অক্ষর প্যারামিটার নামগুলি ব্যবহার করে লক্ষ্য করেছি, যেমন নীচের উদাহরণে।

doSomething(a,b,c)

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

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

জাভাস্ক্রিপ্টে প্রোগ্রামিংয়ের সময় অনুসরণ করা উচিত সেরা-অনুশীলন নামকরণ রূপান্তরগুলি কী? সনাক্তকারী দৈর্ঘ্য কী পরিমাণে গুরুত্বপূর্ণ এবং যদি তাই হয় তবে কতটা পরিমাণে?


13
আমি অত্যন্ত সন্দেহ করি যে ব্রাউজারগুলি পরিবর্তনশীল নাম পরিবর্তন করে। এর উপস্থিতিতে evalএটি নিরাপদ নয় (হ্যাঁ, evalভয়ঙ্কর, তবে এটি স্ট্যান্ডার্ডের অংশ এবং আপনি একটি অনুকূলকরণের জন্য স্ট্যান্ডার্ড সংকলনটি ফেলে দেন না) এবং ট্রাফিক হ্রাসে সামান্যতম সহায়তা করে না - আপনি এখনও চাই পুরো ফাইলটি প্রেরণ করুন

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

@ ডকব্রাউন: এমনকি আমি এটি পছন্দ করি নি। যেহেতু আমি জাভাস্ক্রিপ্টের বিশেষজ্ঞ নই তবে সেরা অনুশীলনটি জানতে চাইলাম।
মানুপকে

দিনের শেষে অর্থপূর্ণ পদ্ধতির নাম ব্যবহার করার জন্য সম্ভবত 50-100KB মূল্যবান অতিরিক্ত ডেটা সম্পর্কে কথা বলা হয়েছিল? যদি 100 কেবি যদি ততক্ষণে গতি সমস্যার কারণ হয়ে থাকে তবে এটি সমাধান করার চেষ্টা করা উচিত নয়, কারণ ব্যবহারকারীদের একটি বড় পুলই এই সমস্যাটি অনুভব করতে পারে না।
রামহাউন্ড

উত্তর:


26

আপনি দেখতে পাবেন যে বিকাশকারীরা নিজেরাই সংক্ষিপ্ত পরিবর্তনশীল নাম ব্যবহার করছেন না । বিকাশকালে, তারা অর্থবহ এবং বিশদ পরিবর্তনশীল নাম ব্যবহার করছে।

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

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

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

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


11

না, সমস্ত ব্রাউজারগুলি পারফরম্যান্সে সহায়তার জন্য জাভাস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে সংক্ষিপ্ত করবে না।

যাইহোক, জাভাস্ক্রিপ্ট ক্ষেত্রে, আপনি কোড পাঠযোগ্যতা / maintainability গতি বা নিরাপত্তা প্রক্রিয়াকরণের লাভ কারণ সেখানে টুলস বলা হয় বলিদান করা উচিত নয় obfuscators এবং অন্যান্য সরঞ্জাম নামক shinkers (অথবা কম্প্রেসার) যা এই উদ্দেশ্যে ডিজাইন করা হয়েছে।

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

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


2

সময়ের আগে ফাইলের আকার সম্পর্কে চিন্তা করবেন না। যদিও এটি সর্বদা উদ্বেগের বিষয়, পাঠযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা আরও গুরুত্বপূর্ণ more

যা বলেছিল, আপনার সম্ভবত কোনওভাবেই আপনার স্ক্রিপ্টগুলির সংস্করণ minified (উদাহরণস্বরূপ, YUI কমপ্রেসর মাধ্যমে ) পরিবেশন করা উচিত ।

আপনি যদি সাধারণভাবে ওয়েব বিকাশের জন্য সর্বোত্তম অনুশীলনে আগ্রহী হন তবে আমি পড়ার পরামর্শ দিচ্ছি যে প্রতিটি প্রোগ্রামার ওয়েব বিকাশ সম্পর্কে কী জেনে রাখা উচিত?


1

আমি খুব দীর্ঘ সময়ের জন্য জাভাস্ক্রিপ্টে কাজ করেছি।

আমাদের একটি নামকরণের মান ছিল যা আপনাকে সমস্ত ভেরিয়েবলের জন্য হাঙ্গেরিয়ান নোটেশন ব্যবহার করতে হয়েছিল ।

দেখে মনে হচ্ছে ঠিক আছে। আমি জানি যে এটি ব্যবহারের বিরুদ্ধে মামলা রয়েছে তবে এটি আমাদের পক্ষে ভাল কাজ করেছে। বিশেষত যখন আপনার কাছে প্রচুর জাভাস্ক্রিপ্ট ফাইল রয়েছে যেখানে আপনাকে স্টাফগুলি সন্ধান করতে হবে।

আমি অসময়ে অপ্টিমাইজ করার বিরুদ্ধে সাবধানতা অবলম্বন করব। আপনি সম্ভবত অগোছালো কোড দিয়ে শেষ করতে পারেন যা সত্যিই খুব বেশি দ্রুত চালায় না।


5
হাঙ্গেরিয়ান স্বরলিপি? পুরাতন স্কুল। হাঙ্গেরিয়ান নোটেশন একটি পুরানো বিকাশ নির্ভরযোগ্য এবং সময়ের সাথে সাথে এর আর প্রস্তাব দেওয়া হয় না।
স্মোকফুট

2
আমি এটি কিছুটা ব্যবহার করার প্রবণতা রাখি তবে কেবল যে মানগুলি jquery দ্বারা মোড়ানো রয়েছে তাদের জন্য, আমি একটি start দিয়ে শুরু করব $ হাঙ্গেরিয়ান নোটেশনের সমস্যাটি হ'ল লোকেরা আপনাকে "ইনট" বনাম "স্ট্রিং" এর শর্তে টাইপ করতে বলেছিল এবং কোনও প্রোগ্রামের সেমেটিক্সের বিচারে নয়
জ্যাকারি কে

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

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

1
হাঙ্গেরিয়ান স্বীকৃতি হ'ল সেই জিনিসগুলির মধ্যে একটি যা লোকেরা সত্যিই কেন বুঝতে না পেরে তাৎক্ষণিকভাবে বরখাস্ত হয়। এটি এটি একই বিভাগে পাওয়া গেছে gotoযেখানে লোকেরা নির্বোধভাবে মন্ত্রটির পুনরাবৃত্তি করে 'গোটো ব্যবহার করবেন না ... গোটো ব্যবহার করবেন না ...' । বাস্তবতাটি হ'ল এটি আপনার সরঞ্জামদণ্ডের কেবল একটি সরঞ্জাম। যে কোনও সরঞ্জামের মতো এটির পরিস্থিতি যেখানে এটি কার্যকর এবং এমন পরিস্থিতি যেখানে এটি এতটা কার্যকর নয় (বা এমনকি ক্ষতিকারকও নয়)। এটি যেন কারও কাছে একটি হাতুড়ি দিয়ে কাঠের টুকরো দেখার চেষ্টা করার খারাপ অভিজ্ঞতা হয়েছিল এবং তারপরে ঘোষণা করা হয়েছিল 'হাতুড়ি কখনও ব্যবহার করবেন না, আরও ভাল করাত!' । সুইপিং সাধারণকরণগুলি সর্বদা ভুল
ম্যাটড্যাভি

1

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

  • ফাংশননামলাইকটি, যেমন, getCashbackData () {
  • ভেরিয়েবলনেমস লাইকএটি, যেমন, ওয়ার অ্যালার্টইন্টারওয়াল = 10;
  • ClassNamesLikeThis উদাহরণস্বরূপ, গ্রাহক ওর্ডার = rd getOrderLines: ফাংশন () {}}
  • EnumNamesLikeThis, উদাহরণস্বরূপ, বর্ণ বর্ণফট পছন্দ = {সাদা: "#FFFFFF"}
  • মেথডনমলাইকএটি, উদাহরণস্বরূপ, গ্রাহক অর্ডার = var getOrderLine: ফাংশন () {}}
  • SYMBOLIC_CONSTANTS_LIKE_THIS, যেমন, var EPOCH_UNIX = "01011970"

গুচ্ছ সংযোগের পরে আরও কিছু যুক্ত করার কী আছে? আমি বলতে চাইছি আপনি এমনকি ডগলাস ক্রকফোর্ড কে ব্যাখ্যা করেন না।
রামহাউন্ড

0

"ক্লিন কোড বিকাশকারী" দর্শনের দ্বারা ক্ষুব্ধ (এবং এখন আপনাকে উপরের পোস্টগুলি থেকে জানতে পেরেছেন যে আপনার পরিবর্তনশীল নামের আকার ছোট করার কারণে পারফরম্যান্সে শূন্য প্রভাব পড়বে) আমি কেবল পরামর্শ দিতে পারি:

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

    getXy(e) { return [e.pageX, e.pageY ] }

    যার অর্থ সত্যিই কোনও অর্থ হতে পারে (বিশেষত জেস এর মতো একটি উন্মাদ আলগাভাবে টাইপ করা ভাষায়;) আপনি কোডটি প্রকাশ করেন

    getPageCoordinatesFromEvent(event) { 
        return [event.pageX, event.pageY ];
    }

    একটি ভাল আইডিইতে আপনি সাধারণত কোনও ভেরিয়েবলের নামটি কখনও কখনও টাইপ করবেন না - সেকেন্ড সময় আপনি কয়েকটি অক্ষর টাইপ করেন এবং স্বতঃসমাপ্তি থেকে কেবল এন্টার টিপুন। আপনি যদি প্রতিটি চরিত্র নিজেই টাইপ করার জন্য জেদ করেন, তবে একটি ভাল আইডিই যাইহোক আপনাকে কোনও টাইপের বিষয়টি খেয়াল করবে। এটি কেবল একটি খুব উপরের উদাহরণ, সুতরাং আমি দৃ strongly়ভাবে পরামর্শ দিচ্ছি (সমালোচনার ফর্ম হিসাবে নয় তবে একটি সৎ প্রস্তাব)

  3. রবার্ট সি। মার্টিনের "ক্লিন কোড" এবং হান্ট / থমাসের "প্র্যাগমেটিক প্রোগ্রামার" বইগুলি পান এবং নিজেকে এই ধরণের প্রশ্ন আর কখনও জিজ্ঞাসা করবেন না - আপনি বিরক্তিকর পরীক্ষাটি স্বয়ংক্রিয় করতে একটানা ইন্টিগ্রেশন সার্ভারে কাজ করতে ব্যস্ত হয়ে পড়বেন be -, এবং বিকাশ প্রক্রিয়াটির অংশগুলি তৈরি করুন (মাইনাইফিং সহ) এবং মজাদার অংশে মনোনিবেশ করুন, স্পষ্টভাবে বোধগম্য কোড লিখুন যা দুর্দান্ত জিনিস দেয়!

পিএস যদি আপনার অত্যাধুনিক জাভাস্ক্রিপ্ট কোডটি বিকাশমানের সাথে গতি বাড়ানোর প্রয়োজন হয় তবে উপরের সাথে ডান বা একসাথে "প্রো জাভাস্ক্রিপ্ট প্রযুক্তি" র জন "মিস্টার জিকুয়েরি" রেজিগের বইটি দেখুন a

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