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="" };
เมื่อคุณมี Intellisense Visual Studio ที่ให้ข้อมูลประเภททั้งๆที่var
คุณต้องพึ่งพาความเข้าใจของคุณน้อยลงผ่านการอ่านรหัสที่เข้มงวดโดยไม่ต้องให้ความช่วยเหลือ อาจเป็นการดีที่จะสมมติว่าไม่ใช่ทุกคนที่มีหรือใช้ Intellisense
โดยสรุปจากตัวอย่างข้างต้นฉันขอแนะนำให้ใช้แอปพลิเคชันตามสั่งของ blanchevar
ไม่ใช่ความคิดที่ดีเพราะสิ่งต่าง ๆ ส่วนใหญ่ทำได้ดีที่สุดในการกลั่นกรองและตามสถานการณ์ในมือดังที่แสดงไว้ที่นี่
เหตุใด Resharper จึงใช้ค่านี้โดยปริยาย ฉันขอแนะนำให้ใช้งานง่ายเพราะมันไม่สามารถแยกความแตกต่างของสถานการณ์ที่จะตัดสินใจได้ดีที่สุดว่าจะไม่ใช้เมื่อใด