আমার কি ভেরিয়েবলগুলি পুনরায় ব্যবহার করা উচিত?


59

আমার কি ভেরিয়েবলগুলি পুনরায় ব্যবহার করা উচিত?

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

যাইহোক, আমি কি জানি যে সর্বোত্তম কার্যাভ্যাস বিরুদ্ধে অধিকাংশ সময় আছে। উদাহরণস্বরূপ তারা "পরামিতি" পদ্ধতি পরামিতিগুলিকে না বলে।

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


11
জাভা 6 সাল থেকে? আপনার কখনই জাভার কোনও সংস্করণে ভেরিয়েবলের নাল বরাদ্দ করার দরকার নেই। যখন কোনও ভেরিয়েবল সুযোগের বাইরে চলে যায়, তখন এটি তার অবজেক্টের রেফারেন্স প্রকাশ করে।
কেভিন প্যাঙ্কো

35
ভেরিয়েবলগুলির পুনরায় ব্যবহার হ'ল কোড-
ওবফাসেকেটররা

7
আপনার পরিবর্তনশীলগুলির জন্য শালীন শনাক্তকারীদের বেছে নেওয়ার সাথে পরিবর্তনশীল পুনরায় ব্যবহারের বিরোধগুলি। আধুনিক ভাষায় পরিবর্তনশীল পুনরায় ব্যবহারের সত্যিকারের কোনও সুবিধা নেই যা ভাল শনাক্তকারী হওয়ার সুবিধাকে ছাড়িয়ে যায়।
জোরেেন

4
এছাড়াও মনে রাখবেন যে সমস্ত পুনরায় ব্যবহার পুনরায় ব্যবহার নয়। ওল্ড ফোরটান প্রোগ্রামারস, এমনকি অন্য ভাষাগুলিতে চলে গেছে এমনকি আমাদের সমস্ত ডিও-লুপের জন্য নিয়মিত I, J, K, L, M, N (বা i, j, k, l, m, n) ব্যবহার করেন routine লুপ) কাউন্টার। আমরা SUM = SUM + A (I, K) * B (K, J), বা যোগফল + = এ [i] [কে] * বি [কে] [জে]; এর মতো জিনিসগুলি দেখতে অভ্যস্ত।
জন আর স্ট্রোহম

1
খুব সীমিত সংস্থান (র‌্যামের কয়েকটি কেবাইট) সহ মাইক্রোকন্ট্রোলার প্রোগ্রামিং করার সময় ভেরিয়েবলগুলি পুনরায় ব্যবহার করা ন্যায়সঙ্গত হতে পারে।
এম.আলিন

উত্তর:


130

আপনার সমস্যাগুলি কেবল তখনই উপস্থিত হয় যখন আপনার পদ্ধতিগুলি দীর্ঘ হয় এবং ক্রমান্বয়ে একাধিক কাজ করে। এটি কোডটি বুঝতে প্রতি আরও শক্তিশালী করে (এবং এভাবে বজায় রাখে)। ভেরিয়েবলগুলি পুনরায় ব্যবহার করা এইটির উপরে ঝুঁকির অতিরিক্ত উপাদান যুক্ত করে কোডটিকে অনুসরণ করা আরও শক্ত করে তোলে এবং আরও ত্রুটির প্রবণ হয়।

আইএমও সেরা অনুশীলন হ'ল সংক্ষিপ্ত পর্যায়ে এমন পদ্ধতি ব্যবহার করা যা কেবলমাত্র একটি কাজ করে, পুরো সমস্যাটি দূর করে।


ইউনিট-টেস্টিংয়ের কী হবে? উদাহরণস্বরূপ, দ্বিতীয়বার পদ্ধতিটি কার্যকর করার পরে এটি এখনও প্রত্যাশার মতো কাজ করে কিনা আমাকে পরীক্ষা করা দরকার।
আইএডাপ্টার

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

3
@ আইডিডাপ্টার, আপনি যে দৃশ্যের বর্ণনা দিয়েছেন তার জন্য আমি কোনও পরিবর্তনশীলটিকে পুনরায় ব্যবহার করব না । উপযুক্ত জিনিসটি এমন কিছু হবে যেমন result1 = foo(); result2 = foo(); Assert.AreEqual(result1, result2);আমি প্রচুর জায়গা দেখছি না যেখানে আপনাকে এই ক্ষেত্রে একটি পরিবর্তনশীল পুনরায় ব্যবহার করতে হবে।
জেএসবি ձոգչ

1
@ আইডিডাপ্টার (অন্তর্নিহিত i = 0; i <2; i ++) {ফলাফল = foo (); assertEquals (প্রত্যাশিত ফলাফল, ফলাফল);}
বিল কে

2
+1 - কখন ছোট পদ্ধতি তৈরি করা যায় এটির জন্য এটি একটি ভাল কোড গন্ধ।

49

কোনও পদ্ধতিতে পরিবর্তনশীল পুনঃব্যবহার হ'ল একটি শক্তিশালী লক্ষণ যা আপনার এটির চুল্লী / বিভক্ত হওয়া উচিত।

সুতরাং আমার উত্তরটি হ'ল আপনার এগুলি পুনরায় ব্যবহার করা উচিত নয়, কারণ আপনি যদি তা করেন তবে পরে এটির পুনরুদ্ধার করা এতটা কঠিন hard


19

এটা নির্ভর করে.

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

void my_function() {
    HRESULT errorcode;
    errorcode = ::SomeWindowsApiFunction();
    if (FAILED(errorcode)) { /* handle error */ }
    errorcode = ::AnotherWindowsApiFunction();
    if (FAILED(errorcode)) { /* handle error */ }
}

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

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

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


15

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


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

2
হ্যাঁ. এটি আপনাকে প্রথম বা দ্বিতীয় পুনরাবৃত্তি ব্যর্থ হলে এটি চিহ্নিত করতে সহায়তা করে। এমএসপেক এটির জন্য সহায়তা করতে পারে, এর উত্তরাধিকার গাছ খুব কার্যকর হবে।
ব্রায়ান বোয়েচার

আপনি যদি "বর্গীয়" ব্যবহার করেন যখন আপনি "বর্গ ভেরিয়েবল" বা "উদাহরণ ভেরিয়েবল" বোঝায় তখন আপনার নিজেকে আরও স্পষ্টভাবে প্রকাশ করা দরকার।
gnasher729

13

আপনার বিভিন্ন ভেরিয়েবল ব্যবহার করা উচিত। যদি আপনি উদ্বিগ্ন হন যে আপনার সহকর্মী বিভ্রান্ত হবে, তাদের নাম দিন যা স্পষ্টভাবে তাদের ভূমিকা coverেকে দেয়।
ভেরিয়েবলগুলি পুনরায় ব্যবহার করা ভবিষ্যতে বিভ্রান্তির সম্ভবত উত্স; এখনই এটি পরিষ্কার করা ভাল।
কিছু ক্ষেত্রে একই পরিবর্তনশীল নামটি আবার ব্যবহার করা যেতে পারে; iএকটি সাধারণ গণনা লুপ উদাহরণস্বরূপ । এই ক্ষেত্রে, আপনার অবশ্যই অবশ্যই নিশ্চিত করা উচিত যে ভেরিয়েবলগুলি তাদের নিজস্ব স্কোপে রয়েছে।

সম্পাদনা: ভেরিয়েবলগুলি পুনরায় ব্যবহার করা কখনও কখনও সিঙ্গল দায়বদ্ধতার নীতি লঙ্ঘনের লক্ষণ । পুনরায় ব্যবহৃত ভেরিয়েবল একই ভূমিকায় ব্যবহৃত হয়েছে কিনা তা পরীক্ষা করে দেখুন। যদি এটি হয় তবে এটি একেবারে পুনরায় ব্যবহার নাও করা যেতে পারে (যদিও এখনও দুটি ভিন্ন ভেরিয়েবল থাকা ভাল, তবে বর্ণিত ভেরিয়েবলের পরিধি সীমাবদ্ধ করার পক্ষে)। যদি এটি বিভিন্ন ভূমিকায় ব্যবহৃত হয় তবে আপনার হাতে একটি এসআরপি লঙ্ঘন রয়েছে।


4

এমন একটি পরিস্থিতি রয়েছে যেখানে আপনি অন্যান্য উত্তরের দেওয়া দুর্দান্ত পরামর্শকে বিবেচনা না করেই পরিবর্তনশীলটি পুনরায় ব্যবহার করতে চাইতে পারেন: যখন আপনার সংকলকটির সাহায্যের দরকার হয়।

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

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


17
-1 যদি না আপনি এমন বাস্তব-বিশ্বের পরিস্থিতির দিকে ইঙ্গিত করতে না পারেন যেখানে এটি আসলে ঘটে থাকে এবং যেখানে কোনও ভেরিয়েবল পুনরায় ব্যবহার করা একটি প্রশংসনীয় পার্থক্য করে। এটি একটি তাত্ত্বিক সমস্যার একটি তাত্ত্বিক সমাধান, এবং এটির ক্ষেত্রে খুব ভাল নয়। সংকলক যেখানে পরিবর্তনশীল রাখার সিদ্ধান্ত নিয়েছে তা সংকলকটির উদ্বেগ; যদি আপনার সংকলকটি দুর্বল কোড উত্পন্ন করে এবং যদি এটি সত্যিই কোনও পার্থক্য করে, তবে সংস্থাপকটি ঠিক করুন বা প্রতিস্থাপন করুন।
কালেব

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

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

@ কালেব সংশোধন করা বা সংকলক প্রতিস্থাপন করা অনেক কারণের জন্য বিকল্প নাও হতে পারে এবং আপনার যা আছে তা কেবল আপনাকেই করতে হবে।

@ থরবজর্নআরভানএন্ডারসেন কী অনুমেয় যে কোনও ব্যক্তিকে লসী সংকলক ব্যবহার করতে বাধ্য করা যেতে পারে এবং তদুপরি যে পারফরম্যান্সটি এতটা সমালোচিত হতে পারে যে আপনাকে একটি রেজিস্টার পুনঃব্যবহারের জন্য দ্বিতীয়টি সংকলকটি অনুমান করতে এবং আপনার কোডটি পরিচালনা করতে হবে? হ্যাঁ. এটা কি সম্ভব ? না। ম্যাডকিথভি সম্মত হন যে তিনি সত্যিকারের বিশ্বের উদাহরণ দিতে পারবেন না। এটি কি সেরা অনুশীলন ? এটা কি ভাল স্টাইল ? এটি কি কোড মানের একটি সূচক ? অবশ্যই না. এটি লিখিত হিসাবে প্রশ্নের একটি দরকারী উত্তর? ম্যাডকিথভিয়ের প্রতি শ্রদ্ধা, তবে আমি এটি মনে করি না।
কালেব

2

আমি না বলব।

এই দৃশ্যটি সম্পর্কে চিন্তা করুন: আপনার প্রোগ্রামটি ক্র্যাশ হয়ে গেছে এবং একটি কোর ডাম্প পরিদর্শন করে যা ঘটেছিল তা আপনার কাজ করা দরকার ... আপনি কি পার্থক্যটি দেখতে পাচ্ছেন? ;-)


যদি আপনার মূল ডাম্পটি কোনও অনুকূলিত বিল্ড থেকে আসে তবে এতে ভেরিয়েবলগুলি ভাগ করে নেওয়ার মেমরি থাকতে পারে। সুতরাং এটি কম সহায়ক তারপর এটি হতে পারে।
উইনস্টন এওয়ার্ট

অবশ্যই, ডিবাগিংয়ের জন্য একটি অনুকূলিত বিল্ড খুব কার্যকর নয়! তবে যে কোনও ক্ষেত্রে আপনার কাছে এখনও একটি ডিবাগ বিল্ড ব্যবহারের বিকল্প রয়েছে ... এবং আপনি যখন ডিবাগারটি সংযুক্ত করেছেন তখন ভেরিয়েবলগুলি কীভাবে পরিবর্তন হয় তা দেখার জন্য আপনাকে কোনও ফাংশন শুরু থেকে ধাপে ধাপে যেতে হবে না, কারণ তারা না! :-D
ফরট্রান

2

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


0

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

scrote = int (স্ক্রোট)

তবে আমি শেষ পর্যন্ত ফাংশনে প্রেরিত প্রকারটি পরিবর্তন করতে এবং প্যারামিটারের প্রকারের পরিবর্তনটি নোট করব।


1
কোডের একটি দীর্ঘ ব্যাচের মাঝখানে "স্ক্রোট = ইনট (স্ক্রোট)" এর মতো একটি লাইন স্থাপন করা রক্ষণাবেক্ষণ প্রোগ্রামারদের ক্রেজি চালানোর দুর্দান্ত উপায়।

আপনার উল্লেখ করা "দীর্ঘ ব্যাচের কোড" এর সাথে ইস্যুটি বেশি হওয়ার সম্ভাবনা রয়েছে।
প্যাডি3118

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

0

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

আপনার ডিবাগারটি অনেক ভেরিয়েবল সহ কোনও ফাংশন ডিবাগ করাও বেদনাদায়ক করে তুলতে পারে। 20 ভেরিয়েবলের সাথে কোনও ফাংশন যদি 16 ভেরিয়েবলের সাথে একের চেয়ে বেশি ডিবাগ করা শক্ত হয় তবে আপনি 5 টি ভেরিয়েবলের পরিবর্তে একটিতে পরিবর্তন বিবেচনা করতে পারেন। ("বিবেচিত হতে পারে" "সর্বদা" উচিত নয়)।

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

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


0

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

আপনার ডিবাগারটি অনেক ভেরিয়েবল সহ কোনও ফাংশন ডিবাগ করাও বেদনাদায়ক করে তুলতে পারে। 20 ভেরিয়েবলের সাথে কোনও ফাংশন যদি 16 ভেরিয়েবলের সাথে একের চেয়ে বেশি ডিবাগ করা শক্ত হয় তবে আপনি 5 টি ভেরিয়েবলের পরিবর্তে একটিতে পরিবর্তন বিবেচনা করতে পারেন। ("বিবেচিত হতে পারে" "সর্বদা" উচিত নয়)।

ভেরিয়েবলের সর্বদা একই উদ্দেশ্য থাকে ততক্ষণ একাধিক জায়গায় একটি ভেরিয়েবল ব্যবহার করা ঠিক। উদাহরণস্বরূপ, যদি দশ ফাংশন কলগুলি ত্রুটি কোডটি ফিরিয়ে দেয়, যা প্রতিটি কলের জন্য তাত্ক্ষণিকভাবে পরিচালিত হয়, তবে একটি ভেরিয়েবল ব্যবহার করুন এবং 10 নয় There এটির মধ্যে একটি সমস্যা রয়েছে: সাধারণত, সংকলক আপনাকে বলবে যখন আপনি অবিচ্ছিন্ন ভেরিয়েবল ব্যবহার করবেন। তবে এখানে, যদি আপনি কল 6 এর পরে ত্রুটি কোডটি পড়ে থাকেন তবে কল 5 এর পরে ভেরিয়েবলটি আসলে পরিবর্তন করা হয়নি, আপনি সংকলকটি আপনাকে সতর্ক না করেই অকেজো ডেটা পাবেন। কারণ ভেরিয়েবলটি আরম্ভ করা হয়েছে, ডেটা সহ যা এখন অকেজো।

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


-2

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

আপনি হাত দ্বারা কোড অবরুদ্ধকরণ বা অন্য বিকাশকারীদের বিরক্ত না করা অবধি।

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