কেন রিশার্পার সব কিছুর জন্য 'ভার' ব্যবহার করতে চায়?


214

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

//From This:
MyObject foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);
//To This:
var foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);

এবং তাই, এমনকি সহজ ধরনের যেমন সঙ্গে int, boolইত্যাদি

কেন এটি সুপারিশ করা হচ্ছে? আমি কম্পিউটার বিজ্ঞান বা নেট নেট ব্যাকগ্রাউন্ড থেকে আসি না, সম্প্রতি "নেট" পড়েছি। নেট বিকাশ হয়েছে, তাই আমি সত্যিই বুঝতে চাইছি কী চলছে এবং এর সুবিধা কি না।



27
আমি এই সম্পর্কে কিছুক্ষণ ধরে ভাবছিলাম এবং আমি এই সিদ্ধান্তে পৌঁছেছি যে আমার সর্বদা ব্যবহার করা উচিত var, এমনকি যখন টাইপটি একেবারেই স্পষ্ট নয়! কারণ কারণ এটি বাধ্য করে আমাকে সবচেয়ে বর্ণনামূলক নাম আমি সঙ্গে আসা পর্যন্ত করতে পছন্দ করে নিন এবং পরিণামে যে কোড অনেক, আরো অনেক পাঠযোগ্য হয়ে ওঠে। শেষ পর্যন্ত এটি বাস্তবায়ন থেকে যুক্তিকে পৃথক করতে সহায়তা করে। অবশ্যই এটি আমার মতামত, আমি আশা করি এটি কাউকে সহায়তা করবে;)।
মাস্টারমাস্টিক

উত্তর:


189

এক কারণ হ'ল পাঠযোগ্যতার উন্নতি। কোনটা ভাল?

Dictionary<int, MyLongNamedObject> dictionary = new Dictionary<int, MyLongNamedObject>();

অথবা

var dictionary = new Dictionary<int, MyLongNamedObject>();

260
আমি প্রথম বলতে হবে। কী চলছে তা দেখতে সহজ!
মংগাস পং

104
ছত্রাক: আপনি কি অপ্রয়োজনীয় পাঠকদের রিন্ডানড পাঠ্য পছন্দ করেন? : ডি
মার্ক সিম্পসন

73
সুস্পষ্ট হওয়া আমার মতে আরও স্পষ্ট। বিভিন্ন থেকে বেশি ব্যবহার করা কিছু পরিস্থিতিতে মাথাব্যাথা তৈরি করে।
ব্যবহারকারী 1231231412

172
আমি এটি ঘৃণা করি যখন ডেভেলপাররা varসমস্ত কিছুর জন্য ব্যবহার করে - আমি প্রচুর এবং টিএফএস (ওয়েব ভিত্তিক ডিফস) ব্যবহার করে প্রচুর কোড রিভিউ করি এবং এটি আমার কাজটিকে অত্যন্ত কঠিন করে তোলে: যেমন var items = GetSomeItems();বনাম IDataReader dr = GetSomeItems();উভয়ের পক্ষে বিবৃতি ব্যবহার করা অনুপস্থিত তবে IDataReaderবনাম ব্যবহারের সময় ধরা আমার পক্ষে সহজ var
ক্রিস Gessler

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

286

রিশার্পার যা পরামর্শ দেয় তা হ'ল স্পষ্টভাবে ভার কীওয়ার্ডের অতিরিক্ত ব্যবহার। প্রকারটি সুস্পষ্ট যেখানে আপনি এটি ব্যবহার করতে পারেন:

var obj = new SomeObject();

যদি প্রকারটি সুস্পষ্ট না হয় তবে আপনার এটি লিখে দেওয়া উচিত:

SomeObject obj = DB.SomeClass.GetObject(42);

36
শয়তানদের উকিল খেলতে, যদি পদ্ধতিটি বা ভেরিয়েবলের নামটি থেকে টাইপটি পরিষ্কার না হয় তবে এটি আরও নামকরণের ক্ষেত্রে সমস্যাটি নির্দেশ করে তবে ভেরের অতিরিক্ত ব্যবহার। যদিও আমি মূলত সম্মত হই না, কেবল তখনই ব্যবহার করা উচিত যখন এটি স্পষ্টতা অপসারণ করে না।
ম্যাট ব্রিগেস

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

18
@ জ্যাকো: +1, তবে এটি উল্লেখ করা উচিত যে প্রকারের সম্পর্কিত তথ্যটি একটি ভেরিয়েবল নামে থাকার পরামর্শ দেওয়া হয় না। উদাহরণস্বরূপ, হাঙ্গেরিয়ান স্বরলিপিটি একটি ভাল অনুশীলন হিসাবে বিবেচিত হয় না।
রোমান বোইকো

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

15
@ অজ্ঞাতনামা টাইপ: আপনি এখনও পয়েন্টটি মিস করছেন। আপনি বলেছিলেন যে পদ্ধতির নামগুলি সর্বদা পদ্ধতির উদ্দেশ্যটি প্রতিবিম্বিত করা উচিত, তবে তাদের এমনকি এটির অর্থ এই নয় যে নামটি ফেরতের মানের ধরণ নির্দিষ্ট করে। Streamউদাহরণস্বরূপ কোনও বস্তু থেকে পড়া পদ্ধতিটির নাম দেওয়া হয়েছে Read, নয় ReadAndReturnNumberOfBytesAsInt32
গুফা

99

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

আমি কখন ব্যবহার করব varএবং কখন না ব্যবহার করব তা পছন্দ করি। কিন্তু আবার, আমি শুধু।


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

3
ঠিক আছে, আমি বৈশিষ্ট্যের অদ্ভুততা জানি না তবে, আমি অবশ্যই জানি যে এটি যে পরিমাণ প্রস্তাব দিয়েছে তাতে আমি অভিভূত হয়েছি; এবং আমি varপ্রায়শই প্রায়শই ব্যবহার করি।
ব্রায়ান মেনার্ড

5
আমি খুঁজে পেয়েছি যে আপনি যখন সর্বদা ভার ব্যবহার করেন (যেমন পুনঃশিরণকারী পরামর্শ হিসাবে) তখন এটি আপনার ভেরিয়েবলের নাম সঠিকভাবে রাখতে বাধ্য করে।
সৌলেল

আপনি কি পরামর্শটি বন্ধ করতে পারেন?
ক্রিস এস

@ অ্যাঞ্জিডেলমার্ট: মুল বক্তব্যটি হ'ল এটি আপনাকে নামগুলি ব্যবহার করতে বাধ্য করে যা অনুচিত, ফে var methodXYResultIntArray। এটি সমস্ত কোডিং মান এবং এর চেয়ে কম সংক্ষিপ্ততার বিপরীতে int[] methodXYResultbyte[]ভবিষ্যতে আপনি যদি পদ্ধতিটি থেকে ফিরে আসতে চান তবে আপনার সমস্ত পরিবর্তনশীল নাম ভুল। সুস্পষ্ট প্রকারের সাহায্যে আপনি এটি খুব সহজেই চুল্লি করতে পারেন could ব্যবহারের বিভিন্ন কারণ রয়েছে var, এ Dictionary<string, List<SomeType<int>>>। তবে যদি পুরো-টাইপ-নামটি খুব বেশি দীর্ঘ না হয় এবং আপনি newডানদিকে ব্যবহার করেন না (বা কোনও স্পষ্টরূপে harালাই) পুনঃভাগের এটির পরামর্শ দেওয়া উচিত নয়।
টিম শেমলেটার

69

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একটি ভাল ধারণা নয় কারণ বেশিরভাগ জিনিসগুলি সর্বোত্তমভাবে পরিমিতরূপে করা হয় এবং হাতের পরিস্থিতি উপর ভিত্তি করে এখানে দেখানো হয়।

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


5
আপনার উদাহরণগুলি ব্যবহার করার পক্ষে আসলে ভাল কারণ var, এটি আপনাকে শালীন পদ্ধতির নাম লিখতে বাধ্য করবে। GetNumber() -but what type?- আচ্ছা, আপনি যত্ন কেন? যদি এটি জানা গুরুত্বপূর্ণ, পদ্ধতিটি কল করুন GetNumberAsDouble(), তবে এটি ঠিক ঠিক স্পষ্ট এবং যদি আপনার একটি পদ্ধতি ফিরে আসে stringএবং একটি ফিরে আসে তবে কাজ করবে double
নিকোডেমাস 13

10
@ নিকোডেমাস 13 আপনি সাধারণত ফাংশনটি লেখার পরিবর্তে আপনি যখন রিটার্ন মানটি ব্যবহার করেন তখন কোনও ফাংশনের রিটার্ন টাইপের বিষয়ে যত্নশীল হন তা আপনি সাধারণত জানেন । আপনার প্রস্তাবিত নামকরণের স্কিমটি getResultsAsIEumeumeOOfDouble এর মতো অপব্যবহারের দিকে ঝুঁকতে পারে এবং এটি যা কিছু করে তা আপনি নিয়োগের ডানদিকে ভার ব্যবহার করে একটি অ্যাসাইনমেন্টের বাম দিক থেকে সরানো টাইপের তথ্য সরিয়ে ফেলা হয়।
এরিক

var মান 2 = ম্যাথ.এবস (-3); // অবশ্যই একটি সংখ্যার ডেটা টাইপ। দুঃখিত, আমি সম্পূর্ণরূপে এই বিষয়ে একমত নই,
অ্যাবস পদ্ধতিতে over টি

var এছাড়াও সূক্ষ্ম যুক্তিযুক্ত ত্রুটি যেমন: var কাউন্টার = "0" হতে পারে; আপনি যা চান তা পূর্ণসংখ্যা হয়
অ্যালানিয়ান

42

রিসার্পারে (৮.০২, তবে সম্ভবত অন্যান্য সংস্করণগুলি), "স্পষ্টভাবে টাইপ করা স্থানীয় চলক ঘোষণাপত্র ব্যবহার করুন" পরামর্শের বিকল্পটি আপনার পছন্দ অনুসারে সামঞ্জস্য করা যেতে পারে , যাই হোক না কেন, প্রথমে রিসার্পারের জন্য বিকল্প মেনু খোলার মাধ্যমে:

পুনঃশ্যাপার বিকল্প মেনু

তারপরে, "কোড পরিদর্শন" এর অধীনে আপনার নির্বাচিত ভাষার "পরিদর্শন তীব্রতা" সামঞ্জস্য করে আমার ক্ষেত্রে সি #:

স্পষ্টভাবে টাইপ করা স্থানীয় ভেরিয়েবল পরামর্শ বন্ধ করুন

যেমন আপনি দেখতে পাচ্ছেন, রিশার্পার যে সমস্ত পরামর্শ দেয় তা সামঞ্জস্য করার বিকল্প রয়েছে। আশা করি এটি আমার মতো এমন কাউকে সহায়তা করে যার ইতিমধ্যে 'ভার' ব্যবহারের কৌশল রয়েছে এবং কেবল রিসার্পার এটি সম্মান করতে চায় :)


এটি একটি পৃথক প্রশ্নের উত্তর দেয় যা একেবারেই জিজ্ঞাসা করা হয়নি।
কার্লস অ্যালকোলেয়া

9
তবে এখানে আসার সময় এটি অনেকের জন্যই এটি প্রাসঙ্গিক। +1
অরি নাচুম

24

আমি অবাক হয়েছি যে কেউ তা উল্লেখ করেনি যে ইনস্ট্যান্টিয়েটেড অবজেক্টের ধরণটি পরিবর্তন করাও সহজ, কারণ

AVeryLongTypeName myVariable = new AVeryLongTypeName( arguments );

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

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


পরিবর্তে ফ্যাক্টরি পদ্ধতিগুলিকে কল করার সময় খুব দরকারী "নতুন"
ইয়ান রিংরোজ

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

24

'বর্ণ' পরিষ্কার হওয়ার বিষয়ে

এটি ব্যবহার করবেন কিনা তা নিয়ে মূল বিতর্ক var কীওয়ার্ডটি বা করবেন না সে সম্পর্কে মূল তর্কটি আপনার এবং অন্যান্য বিকাশকারীদের কাছে কোডটি কতটা পাঠযোগ্য।

ঠিক যেমন আপনি কোনও গল্প লিখছেন ঠিক তেমন সঠিক উত্তর নেই। তবে আসুন সরল ইংরেজিতে এর কয়েকটি উদাহরণ দেখি।

জ্যাক বিলকে হ্যালো বললেন। তিনি তাকে পছন্দ করেন নি তাই তিনি ঘুরে অন্য পথে চলে গেলেন।

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

জ্যাক বিলকে হ্যালো বললেন। জ্যাক বিল পছন্দ করেনি তাই তিনি ঘুরে অন্য পথে চলে গেলেন।

এক্ষেত্রে আরও সুনির্দিষ্ট হওয়ার কারণে বাক্য পরিষ্কার হয়ে যায়। তবে তা সবসময় হয় না। কিছু ক্ষেত্রে সুনির্দিষ্ট হওয়া পড়া পড়া আরও কঠিন করে তোলে।

বিল বই পছন্দ করে, তাই বিল লাইব্রেরিতে যান এবং বিল একটি বই বের করেন যা বিল সর্বদা পছন্দ করে।

এই ক্ষেত্রে বাক্যটি পড়া সহজ হবে যদি আমরা "তিনি" ব্যবহার করি এবং কিছু ক্ষেত্রে তার নামটি একসাথে ছেড়ে যায়, যা মূলশব্দটি ব্যবহারের সমতুল্য var

বিল বই পছন্দ করে, তাই তিনি লাইব্রেরিতে গিয়ে একটি বই বের করেছিলেন যা তিনি সর্বদা পছন্দ করেছেন।

এই উদাহরণগুলি সারাংশটি আবৃত করে তবে তারা পুরো ঘটনাটি বলে না। এই উদাহরণগুলিতে ব্যক্তির উল্লেখ করার জন্য কেবল একটি উপায় ছিল। হয় তাদের নাম ব্যবহার করে বা "তিনি" এবং "তাকে" এর মতো আরও সাধারণ শব্দ ব্যবহার করে।

কোডের ক্ষেত্রে আমাদের কাছে 3 টি উপায় রয়েছে যাতে আমরা স্বচ্ছতা যুক্ত করতে পারি। প্রকার, ভেরিয়েবলের নাম এবং অ্যাসাইনমেন্ট। উদাহরণস্বরূপ কোডের এই লাইনটি ধরুন:

Person p = GetPerson();

এখন প্রশ্নটি হয়ে ওঠে যে কী চলছে তা নির্ধারণে সহায়তা করার জন্য কোডের সেই লাইনে পর্যাপ্ত তথ্য রয়েছে?

নিম্নলিখিত কোড লাইন সম্পর্কে কি? আপনি কি এখনও pএই বিষয়টির অর্থ বুঝতে পারবেন :

var p = GetPerson();

তোমার কি অবস্থা:

var p = Get();

বা এখন:

var person = Get();

বা এটি একটি:

var t = GetPerson();

অথবা এটা:

var u = Person.Get();

কীওয়ার্ড কিনা var কোনও প্রদত্ত কাজ করে ভেরিয়েবল, ক্লাস এবং পদ্ধতিগুলির নামকরণের মতো কোডের প্রসঙ্গে অনেক কিছু নির্ভর করে। এটি কোডের জটিলতা এবং চারপাশের কোডের বাকী অংশগুলির উপরও নির্ভর করে।

ব্যক্তিগতভাবে আমি varকীওয়ার্ডটি ব্যবহার করতে পছন্দ করি এটি বেশিরভাগ সময় আমার কাছে আরও ব্যাপক । তবে আমি টাইপটির পরে আমার পরিবর্তনশীলগুলির নামও রাখি যাতে আমি কোনও তথ্য হারাতে পারি না not

এটি বলেছিল যে কখনও কখনও আমি যে ব্যতিক্রমগুলি করি তার উপর নির্ভর করে এটি জটিল কিছু প্রকৃতির, এবং সফটওয়্যার জটিল না হলে কিছুই নয়।


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

আপনার সমস্ত ক্ষেত্রে যেখানে ফিরে আসা প্রকারটি স্পষ্ট নয় আমি সম্মত হচ্ছি যে আপনি ভের ব্যবহার করবেন না কারণ আপনি এখন দরকারী তথ্য বাদ দিচ্ছেন।
রোলগুলি

18

আমি এটিও অপছন্দ করি।

আমি চাই না এটি ব্যবহারের বিষয়ে বিতর্কে পরিণত হোক var , এর ব্যবহার রয়েছে তবে সর্বত্র ব্যবহার করা উচিত নয়।

মনে রাখার মূল বিষয়টি হ'ল রিশার্পার আপনার কোডিং স্ট্যান্ডার্ডের সাথে কনফিগার করা আছে।

সম্পাদনা করুন: রিশ্যার্পার এবং ভ্যার


13
এক বছর বা এতক্ষণ প্রতিরোধ করার পরে, আমি এখন প্রায় সবসময় ভের ব্যবহার করি।
লিয়ামব

15

আমি অনেকগুলি সঠিক উত্তর দেখতে পাচ্ছি, তবে পুরোটি অনুপস্থিত।

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

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

কীভাবে সেখানে যাব সে সম্পর্কে আমি ব্যাখ্যা করব।

ভিজ্যুয়াল স্টুডিওতে> প্রধান মেনু> পুনরায় ভাগ করুন> বিকল্পগুলি> কোড সম্পাদনা> সি #> কোড শৈলী> ঘোষণার ক্ষেত্রে বিভিন্ন ব্যবহার

  • অন্তর্নির্মিত প্রকারের জন্য সুস্পষ্ট প্রকারের ব্যবহার করুন
  • সাধারণ প্রকারের জন্য স্পষ্ট হয়ে গেলে 'var' ব্যবহার করুন
  • অন্য কোথাও ইউজার '

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

রিশার্প সাহায্যের ডকুমেন্টেশন: কোড সিনট্যাক্স স্টাইল: অন্তর্নিহিত / স্পষ্টত টাইপিং ('ভার' কীওয়ার্ড) - ' বর্ণ ' কীওয়ার্ড ব্যবহারের পছন্দগুলি কনফিগার করুন


এটির বিতর্কগুলির বাইরে সঠিক উত্তর হিসাবে চিহ্নিত করা উচিত, এটিই ভারসাম্যযুক্ত পন্থা
ব্রায়ান ওগডেন

"যেখানে স্পষ্ট" সিদ্ধান্ত নেওয়া হয় কীভাবে আপনি একটি উদাহরণ দিতে পারেন?
রোল করে


13

আমার নিয়মটি হ'ল:

  • আপনি যদি একটি আদিম টাইপ ঘোষণা করছেন (যেমন byte, char, string, int[], double?, decimal, ইত্যাদি)? -> প্রকারটি ব্যবহার করুন:

    string myStr = "foo";
    int[] myIntArray = [123, 456, 789];
    double? myDouble = 123.3;
  • আপনি যদি একটি জটিল টাইপ ঘোষণা করছেন (যেমন List<T>, Dictionary<T, T>, MyObj)? -> ব্যবহার var:

    var myList = List<string>();
    var myDictionary = Dictionary<string, string>();
    var myObjInstance = new MyObj();

আমি একমত হতে চাই না, string myStr = "foo";স্পষ্টতই এটি একটি স্ট্রিং। আমি আপনার সমস্ত উদাহরণগুলি বিভিন্ন বিভাগে ব্যবহার করতে চাই ... এবং ঘোষণাগুলি যে কোনও পদ্ধতি থেকে প্রত্যাখ্যানের ধরণটি ব্যবহার করার জন্য প্রত্যাবর্তন। তবে দিনের শেষে, আপনি এবং আপনার দল যা মনে করেন তা নির্দিষ্ট প্রকল্পের জন্য ভাল।
ডিন মিহান

12

আমি কেবল এটিই উল্লেখ করতে চাই যে সি # কোডিং কনভেনশনগুলিতে "var" ব্যবহারের প্রস্তাব দেওয়া হচ্ছে

যখন ভেরিয়েবলের ধরণটি অ্যাসাইনমেন্টের ডান দিক থেকে স্পষ্ট হয় বা যখন সঠিক টাইপটি গুরুত্বপূর্ণ না হয়

তাই সম্ভবত রিশার্পারে টিপটি ডিফল্টরূপে চালু রয়েছে। তারা এমন কিছু মামলাও সরবরাহ করে যেখানে এটি একই ডকুমেন্টের ঠিক নীচে পাঠযোগ্যতার উন্নতি করবে না।


এটি দুর্দান্ত যখন আপনি জানেন যে প্রকারটি এসেছে System.Diagnostics.PerformanceCounter() - আপনি খুব সহজেই বিল্ট ইন ডায়াগনস্টিক্স ক্লাস থেকে পারফমেন্স কাউন্টারটি বলতে পারেন। কিন্তু এখানে কি ধরণের ফিরে আসে? var thingyMaBob = GetThatSpecialThing(18,null,(MyEnum)2)? কোনও ক্লকিং ক্লু নেই, বিশেষত আপনার সমাধানে 100 টিরও বেশি প্রকল্প রয়েছে।
পাইওটর কুলা

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

6

রিশার্পার সুপারিশ করে var কারণ এটি বস্তু তৈরির দিকে ঝোঁক।

এই দুটি উদাহরণের তুলনা করুন:

StringBuilder bld = new StringBuilder();

var bld = new StringBuilder();

এটি কেবল একটি শর্টহ্যান্ড যা পড়া সহজতর বলে মনে করা হচ্ছে।

আমার মনে হয় আপনি যখন "নতুন" দিয়ে স্পষ্টভাবে নতুন বস্তু তৈরি করেন তখন এটি ঠিক আছে। আপনার উদাহরণে তবে ক্লাসগুলির সঠিক নামকরণ না করা থাকলে এটি স্পষ্ট নাও হতে পারে।


6

বিটিডাব্লু, রিশার্পার 'আপনি এই কোডটি আপনার কোডটিতে প্রয়োগ করতে পারেন' এবং 'আপনার কোডটি নষ্ট হয়ে গেছে, আমাকে এটি ঠিক করতে চান?' এর মধ্যে একটি পার্থক্য আঁকেন। varশব্দ মত "যদি বিপরীতমুখী পাখির কমাতে" যাহা যাহা সহ, পরামর্শ বিষয়শ্রেণীতে অন্তর্ভুক্ত হয়; আপনি এটি অনুসরণ করতে হবে না।

বিকল্প সংলাপের মাধ্যমে বা সরাসরি সেই সতর্কতার জন্য পপআপ মেনুটির মাধ্যমে এর প্রতিটি সতর্কতাগুলির মধ্যে কতটা বিরক্তিকর তা আপনি কনফিগার করতে পারেন। আপনি varপ্রস্তাবের মতো জিনিসগুলি ডাউনগ্রেড করতে পারেন যাতে সেগুলি কম বিশিষ্ট হয় বা আপনি 'এক্সটেনশন পদ্ধতি ব্যবহার করুন' সতর্কতার মতো জিনিসগুলি আপগ্রেড করতে পারেন যাতে এটি প্রকৃত ত্রুটি হিসাবে দেখা যায়।


5

var.Net 3.0 এর বৈশিষ্ট্যটি হ'ল ইনফারেন্স টাইপ করুন যা টাইপ নিরাপদ এবং প্রায়শই আপনার কোডটি পড়া সহজ করে তোলে। তবে আপনার দরকার নেই এবং আপনি চাইলে পুনঃভাগে সুপারিশটি বন্ধ করতে পারেন।


4

ভার আশ্চর্যজনক! আমি এমন অনেক বিকাশকারীকে নিয়ে এসেছি যারা এই ধারণাটির মধ্যে রয়েছেvar রয়েছেন যা একটি গতিশীল টাইপের সাথে আবদ্ধ, এটি নয়। এটি এখনও স্থিরভাবে টাইপ করা হয়েছে, এটি কেবল সংকলক দ্বারা সিদ্ধান্ত নেওয়া হয়েছে।

এখানে var ব্যবহারের কিছু আশ্চর্যজনক ধনাত্মকতা রয়েছে

কম টাইপিং ভার্ সংক্ষিপ্ত এবং পড়া সহজ, উদাহরণস্বরূপ

Dictionary<int,IList<string>> postcodes = new Dictionary<int,IList<string>>()ইউক।

var postcodes = new Dictionary<int,IList<string>>()\ o / \ o /

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

কম কোড পরিবর্তন - যদি কোনও পদ্ধতির কলের রিটার্নের ধরণের পরিবর্তন হয়। আপনাকে কেবল পদ্ধতি কলটি পরিবর্তন করতে হবে, এটি ব্যবহৃত প্রতিটি স্থানই নয়।

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

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

for(var i = 0; i < 10; i++) 
{

}

বনাম

for(int i = 0; i < 10; i++) 
{

}

এটি সমস্ত ব্যক্তিগত পছন্দ হিসাবে নেমে এসেছে তবে varসত্যিই ব্যবহার করা আপনার বিকাশের গতি বাড়িয়ে দেবে এবং বেনামে ধার্মিকতার পুরো বিশ্বটিকে আনলক করবে।


2

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

var x = 1;

x একটি অন্তর্নিহিত হিসাবে বোঝানো হয় এবং এটির সাথে অন্য কোনও মান নির্ধারণ করা যায় না।

ভেরিয়েবলের ধরণটি পরিবর্তন করতে পারলে var কীওয়ার্ড কার্যকর; আপনার তখন কেবল দুটি পরিবর্তে একটি পরিবর্তন করতে হবে:

var x = 1; --> var x = "hello";
int x = 1; --> string x = "hello";

1
@ অ্যালেক্সকামুরভ নীচের কোডটি 10 ​​লাইন যেভাবেই ভেঙে যাবে, এটি ভেরের সাথে সম্পর্কিত নয়।
ব্যবহারকারী 3285954

1
@ ব্যবহারকারী 3285954 কিছু ক্ষেত্রে সমস্যা সমস্যাটি লুকিয়ে রাখতে পারে এবং তখনই জিনিসগুলি কুৎসিত হতে পারে। সমস্যা কোড লেখার ক্ষেত্রে নয়, সমস্যাটি রক্ষণাবেক্ষণে। কেউ কেউ বিতর্ক করে যে এটি ভেরার সাথে ক্লিনার তবে আমি এটি কখনও কখনও অচল হয়ে পড়ে দেখি। এটি একটি ধর্মীয় বিতর্কের কাছাকাছি। brad-smith.info/blog/archives/336 আমি ব্যক্তিগতভাবে কেবল লিনাকের বিবৃতি এবং অন্যান্য জায়গাগুলির জন্য ব্যবহার করি যেখানে প্রকারটি ঘোষণা করা সত্যই ভার্জোজ। আমি মনে করি ভের একটি ভাল সংযোজন এবং এটি চালু করার কারণগুলির জন্য লোকদের অ্যান্ডারস হেজলসবার্গের মন্তব্যগুলি দেখতে হবে।
অ্যালেক্স কাম্বুরভ

2

varশব্দ C # এর 3.0 চালু হয় - এটা আমাদের টাইপ স্পষ্টভাবে উল্লেখ ভুলে আমাদেরকে পারেন।

আপনি ব্যবহার করেন কিনা তাতে সত্যিকারের কোনও পার্থক্য নেই

MyObject foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);

অথবা

var foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);

খাঁটি পাঠযোগ্যতা এবং ত্রুটির জন্য কম সুযোগ ব্যতীত।

এটিকে ক্লিচড উদাহরণের মতো মনে হয়, তবে নিম্নলিখিতগুলি আপনার বুঝতে সহায়তা করতে পারে বলে মনে করেন:

var myInt = 23;

একটি intপ্রকার ফেরত দেয় , যদিও

var myInt = "23";

এক stringপ্রকার ফেরত দেয় ।

এমএসডিএন রেফারেন্স


2

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

তবে 'ভার' ব্যবহারের এর সীমাবদ্ধতা রয়েছে । এটি নীচে বহুবর্ষবাদের ব্যবহার প্রতিরোধ করে যা খাঁটি সৌন্দর্য :

ধরুন একটি কুকুর প্রাণীকে প্রসারিত করে; বিড়াল প্রাণী শ্রেণীর শ্রেণিবিন্যাস প্রসারিত করে:

Animal x = new Dog();
DoStuffWithDog(x as Dog);

x = new Cat();
DoStuffWithCat(x as Cat);

void DoStuffWithDog(Dog d){}
void DoStuffWithCat(Cat c){}

X 'var' দিয়ে ঘোষিত একই কোডটি সংকলন করবে না

var x = new Dog(); // from this point, x is a Dog
DoStuffWithDog(x as Dog);

x = new Cat(); // cannot assign a Cat instance to a Dog
DoStuffWithCat(x as Cat);

void DoStuffWithDog(Dog d){}
void DoStuffWithCat(Cat c){}

যাইহোক, মূল প্রশ্নের দিকে ফিরে, আমি রিশার্পার ব্যবহার করি না, তবে আমি ধরে নিই যে 'ভার' কখন ব্যবহার করবেন না তা সনাক্ত করতে যথেষ্ট স্মার্ট। :-)


4
অযথা castালাই (সহ as) খাঁটি ভয়ঙ্কর। আপনি সংকলনের ত্রুটিগুলি রানটাইম ত্রুটিতে রূপান্তরিত করেন যদি আপনার এমন কিছু থাকে তবে Animal x = new Cat(); DoStuffWithDog(x as Dog); কেন এক্স পুনরায় ব্যবহার করবেন? কুকুর এক্স = নতুন কুকুর (), বিড়াল y = নতুন ক্যাট (), কোনও সম্ভাব্য অস্পষ্টতা বাড়বে না।
সোয়ুলকে

'ালাই ('হিসাবে' বা না হিসাবে) একটি রান সময় ত্রুটির ফলস্বরূপ হতে পারে। আপনি কী করছেন জানেন যখন awালাই সম্পর্কে এত 'ভয়ঙ্কর' কী? এক্স পুনরায় ব্যবহার কেন? এখানে উদাহরণ উদাহরণস্বরূপ। উদাহরণটির লক্ষ্যটি দেখানো হয় যে 'ভার' ব্যবহারের ফলে কীভাবে সীমাবদ্ধতা আসতে পারে যখন কোনও রেফারেন্সটি বহুরূপী হিসাবে বোঝানো হয়।
xtrem

5
না, এটি পারে না: পলিমারফিজম এখানে যা চলছে তার বিপরীত। এটি ধরণের অবজেক্টগুলিকে Animalএমন পদ্ধতিতে পাস করার চেষ্টা করছে যা গ্রহণ করে Dogএবং Cat। পলিমরফিজ্ম বিপরীত হল: তাই আপনি ধরনের বস্তু পাস করতে পারেন Dogএবং Catমধ্যে একটি পদ্ধতি যা লাগে Animalউদাহরণস্বরূপ, void Walk(Animal a): Walk(new Cat()),Walk(new Dog())
মার্ক Sowul

আপনার এইভাবে ভেরিয়েবলগুলি পুনরায় ব্যবহার করা উচিত নয়, খুব বাজে বাগগুলিতে নিয়ে যায়। সংক্ষিপ্ত পদ্ধতিগুলিতে এতটা সুস্পষ্ট নয় তবে যখন আপনার কোডের 15-20 লাইন থাকবে আপনি x কী তা ভুলে যাবেন। অলস হবেন না: var কুকুর = নতুন কুকুর (); DoStuff (কুকুর); var cat = নতুন ক্যাট (); DoStuff (বিড়াল);
ব্যবহারকারী 3285954

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

2

আমার দৃষ্টিতে, varকেবলমাত্র তখনই ব্যবহার করা উচিত যখন ভেরিয়েবলের মান নির্ধারণের সময় প্রকারটি কী তা অবিলম্বে পরিষ্কার হয়ে যায়।

উদাহরণ:

var s = "string value";

এটা স্পষ্ট যে sএকটি string

আমি বিশ্বাস করি যখন পরিবর্তনশীল প্রকারের নামটি খুব জটিল হয় তখন এটিও উপযুক্ত।

উদাহরণ:

Dictionary<SomeCustomKeyType, Dictionary<AnotherCustomKeyType, List<int>>> dict = new Dictionary<SomeCustomKeyType, Dictionary<AnotherCustomKeyType, List<int>>>();

// This is a little easier to read than the above statement
var dict = new Dictionary<SomeCustomKeyType, Dictionary<AnotherCustomKeyType, List<int>>>();

এই পরিস্থিতিগুলি ব্যতীত, আমি ব্যবহার করে কোনও জাঁ তৈরি varকরতে দেখছি না, তবে আমি এমন কিছু পরিস্থিতিতে ভাবতে পারি যাতে এটি ক্ষতিকারক হতে পারে:

উদাহরণস্বরূপ, একটি নিষ্পত্তিযোগ্য প্রকার, যার ডান পাশের ভেরিয়েবল মান প্রকারটি পরিষ্কারভাবে প্রদর্শন করে না। আইডিস্পোজেবলের ডিসপোজ করা সহজেই ভুলে যেতে পারে

উদাহরণ:

// returns some file writer
var wr = GetWriter();

wr.add("stuff");
wr.add("more stuff");

//...
//...

// Now `wr` needs to be disposed, 
// but there is no clear indication of the type of `wr`,
// so it will be easily overlooked by code writer and code reviewer.

1

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

var bar = GetTheObjectFromDatabase();
bar.DoSomething();

ClassA {
  void DoSomething() {
  //does something
  }
}

ClassB {
  void DoSomething() {
  //does something entirely different
  }
}

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

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

নিম্নলিখিত বর্ণের ব্যবহার সর্বদা ভাল হওয়া উচিত:

var abc = new Something();

1

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

এই সেটিংস কোড সম্পাদনা> সি #> কোড স্টাইলের অধীনে

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


0

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

আমার মতে মূল সুবিধাটি হ'ল এটি আপনাকে আরও ভাল ভেরিয়েবল নামকরণ করতে বাধ্য করে। আপনার উদাহরণে 'foo' একটি ভেরিয়েবল নামের জন্য দরিদ্র পছন্দ।


0

জেটব্রেইনসের (রিশ্যার্পার রচয়িতা) মতে, তারা ডিফল্টরূপে ভের ব্যবহারকে উত্সাহ দেয়।

তাদের ওয়েবসাইট থেকে :

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


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