var
কোডের তাত্ক্ষণিক উপলব্ধি হ্রাস করার সময় কোডের পঠনযোগ্যতা বৃদ্ধি করতে পারে। ঠিক একই, এটি অন্যান্য পরিস্থিতিতে কোডের পঠনযোগ্যতা হ্রাস করতে পারে। কখনও কখনও এটির ব্যবহার নিরপেক্ষ হয়। বোধগম্যতার পাঠযোগ্যতার পরিমাপটি আনুপাতিক নয় তবে পরিস্থিতির উপর নির্ভর করে। কখনও কখনও উভয় একসাথে বৃদ্ধি বা হ্রাস হয়।
ফ্যাক্টরটি হ'ল কী var
প্রয়োগ করা হচ্ছে এবং লক্ষ্যটি পাঠকের কাছে তাত্ক্ষণিকভাবে তার ডেটা টাইপের অবলম্বনকে সমর্থন করে বা যদি প্রোগ্রামের অংশটি হাতে পাওয়ার জন্য যদি এর টাইপ তথ্য প্রয়োজন হয়।
উদাহরণস্বরূপ, খারাপ নামকরণ var
কোড বোঝার হ্রাস ঘটাতে পারে। এই নয় var
'র দোষ যদিও:
var value1 = GetNotObviousValue(); //What's the data type?
//vs.
var value2 = Math.Abs(-3); // Obviously a numeric data type.
কখনও কখনও var
কোডটি অনুপস্থিতিতে আরও বেশি পঠনযোগ্য হয় তখন সাধারণ ডেটা ধরণের জন্য ব্যবহার করা বোধগম্য নয় :
var num = GetNumber(); // But what type of number?
// vs.
double num = GetNumber(); // I see, it's a double type.
কখনও কখনও var
ডেটা ধরণের তথ্য গোপন করতে দরকারী হতে পারে যা আপনার প্রয়োজনীয়তাগুলি দেখার জন্য প্রয়োজনীয় নয়:
IEnumerable<KeyValuePair<string,List<Dictionary<int,bool>>>> q = from t in d where t.Key == null select t; // OMG!
//vs.
var q = from t in d where t.Key == null select t;
// I simply want the first string, so the last version seems fine.
q.First().Key;
কোনও বেনামি টাইপ উপস্থিত থাকলে আপনাকে অবশ্যই ব্যবহার করতে হবেvar
কারণ এটিকে কল করার জন্য কোনও প্রকারের নাম নেই:
var o = new { Num=3, Name="" };
আপনার সত্ত্বেও ভিজুয়াল স্টুডিও ইন্টেলিসেন্স প্রকারের তথ্য সরবরাহ করে থাকে var
, তখন আপনাকে কোনও সহায়তা ছাড়াই কঠোর কোড পাঠের মাধ্যমে আপনার বোঝার উপর কম নির্ভর করতে হবে। ধারণা করা বুদ্ধিমানের মতো নয় যে প্রত্যেকেরই ইন্টেলিসেন্স থাকতে পারে বা ব্যবহার করা যায় না।
উপরোক্ত উদাহরণগুলির উপর ভিত্তি করে সংক্ষেপে আমি পরামর্শ দিচ্ছি যে কার্ট ব্লাঞ্চের প্রয়োগ var
একটি ভাল ধারণা নয় কারণ বেশিরভাগ জিনিসগুলি সর্বোত্তমভাবে পরিমিতরূপে করা হয় এবং হাতের পরিস্থিতি উপর ভিত্তি করে এখানে দেখানো হয়।
কেন পুনরায় ভাগ করে নেওয়ার বিষয়টি ডিফল্টরূপে? আমি স্বাচ্ছন্দ্যের জন্য পরামর্শ দেব, কারণ এটি কখন ব্যবহার না করা উচিত তা সিদ্ধান্ত নেওয়ার জন্য পরিস্থিতিগুলির সংক্ষিপ্তকরণগুলিকে পার্স করতে পারে না।