'var' là về việc rõ ràng
Cuộc tranh luận chính về việc có nên sử dụng var
từ khóa hay không là về mức độ dễ đọc của mã đối với bạn và các nhà phát triển khác.
Giống như bạn đang viết một câu chuyện, không có câu trả lời đúng. Nhưng hãy xem xét một số ví dụ về điều này bằng tiếng Anh.
Jake nói xin chào với Bill. Anh không thích anh nên anh quay lại và đi con đường khác.
Ai đã đi con đường khác? Jake hay Bill? Trong trường hợp này, sử dụng tên "Jake" và "Bill" giống như sử dụng tên loại. Và "Anh ấy" và "anh ấy" giống như sử dụng var
từ khóa. Trong trường hợp này nó có thể giúp được cụ thể hơn. Ví dụ sau đây rõ ràng hơn nhiều.
Jake nói xin chào với Bill. Jake không thích Bill nên anh quay lại và đi theo con đường khác.
Trong trường hợp này được cụ thể hơn làm cho câu rõ ràng hơn. Nhưng điều đó không phải lúc nào cũng đúng. Trong một số trường hợp cụ thể làm cho nó khó đọc hơn.
Bill thích sách, vì vậy Bill đã đến thư viện và Bill lấy ra một cuốn sách mà Bill luôn thích.
Trong trường hợp này, việc đọc câu sẽ dễ dàng hơn nếu chúng ta sử dụng "anh ấy" và trong một số trường hợp bỏ tên của anh ấy lại với nhau, tương đương với việc sử dụng var
từ khóa.
Bill thích sách, vì vậy anh đến thư viện và lấy ra một cuốn sách mà anh luôn thích.
Những ví dụ này bao gồm ý chính, nhưng chúng không nói lên toàn bộ câu chuyện. Trong những ví dụ đó chỉ có một cách để nói đến người đó. Hoặc bằng cách sử dụng tên của họ hoặc bằng cách sử dụng một thuật ngữ chung chung hơn như "anh ấy" và "anh ấy".
Trong trường hợp mã, chúng tôi có 3 cách để giúp thêm rõ ràng. Loại, tên biến và gán. Lấy dòng mã này làm ví dụ:
Person p = GetPerson();
Câu hỏi bây giờ là có đủ thông tin trong dòng mã đó để giúp bạn tìm hiểu chuyện gì đang xảy ra không?
Còn dòng mã sau đây thì sao? Bạn vẫn sẽ biết những gì p
có nghĩa là trong trường hợp này:
var p = GetPerson();
Làm thế nào bây giờ:
var p = Get();
Hay bây giờ:
var person = Get();
Hoặc cái này:
var t = GetPerson();
Hoặc này:
var u = Person.Get();
Việc từ khóa có var
hoạt động trong một kịch bản nhất định hay không phụ thuộc rất nhiều vào ngữ cảnh của mã, như cách các biến, lớp và phương thức được đặt tên. Nó cũng phụ thuộc vào độ phức tạp của mã và phần còn lại của mã xung quanh nó.
Cá nhân tôi thích sử dụng var
từ khóa toàn diện hơn đối với tôi hầu hết thời gian. Nhưng tôi cũng có xu hướng đặt tên biến của mình theo loại để tôi không thực sự mất bất kỳ thông tin nào.
Điều đó nói rằng đôi khi tùy thuộc vào bối cảnh tôi đưa ra ngoại lệ, đó là bản chất của bất cứ điều gì phức tạp và phần mềm không là gì nếu không nói là phức tạp.