'var' означает ясность
Основная дискуссия о том, следует ли использовать ключевое слово var
или нет, связана с тем, насколько читабелен код для вас и других разработчиков.
Так же, как если бы вы писали историю, нет однозначного правильного ответа. Но давайте рассмотрим некоторые примеры этого на простом английском языке.
Джейк поздоровался с Биллом. Он ему не понравился, поэтому он повернулся и пошел другим путем.
Кто пошел другим путем? Джейк или Билл? В этом случае «Джейк» и «Билл» похожи на имя типа. И «он» и «он» похожи на ключевое слово var. В этом случае это может помочь быть более конкретным. Следующее, например, гораздо понятнее.
Джейк поздоровался с Биллом. Джейку не понравился Билл, поэтому он повернулся и пошел другим путем.
В этом конкретном случае предложение стало более понятным. Но это не всегда будет так. В некоторых случаях конкретность затрудняет чтение.
Биллу нравятся книги, поэтому Билл пошел в библиотеку, а Билл достал книгу, которая всегда нравилась Биллу.
В этом случае было бы легче прочитать предложение, если бы мы использовали «он» и в некоторых случаях исключили его имя вместе, это эквивалентно использованию ключевого слова var
.
Биллу нравятся книги, поэтому он пошел в библиотеку и достал книгу, которая ему всегда нравилась.
Эти аналогии охватывают суть, но они не рассказывают всю историю. Видите, в этих примерах был только один способ обратиться к человеку. Или с их именем, например, Биллом, или более общим способом, как «он» и «он». Но мы работаем только с одним словом.
В случае кода у вас есть два «слова», тип и имя переменной.
Person p = GetPerson();
Теперь возникает вопрос: достаточно ли информации, чтобы вы могли легко определить, что такое p
? Вы все еще знаете, что люди в этом сценарии:
var p = GetPerson();
Как насчет этого:
var p = Get();
Как насчет этого:
var person = Get();
Или вот этот:
var t = GetPerson();
Или вот этот:
var u = Person.Get();
Работает ли ключевое слово var
в данном сценарии, во многом зависит от контекста кода, например, от имен переменных, классов и методов, а также от сложности кода.
Лично мне нравится использовать ключевое слово var
, оно более полное: me . Но я также склоняюсь называть свои переменные после типа, поэтому я не теряю никакой информации.
Тем не менее, иногда я делаю исключения, такова природа чего-то сложного, а программное обеспечение - ничто, если не сложное.