'var' означает быть ясным
Основная дискуссия о том, следует ли использовать var
ключевое слово или нет, заключается в том, насколько читабелен код для вас и других разработчиков.
Так же, как если бы вы писали историю, нет однозначного правильного ответа. Но давайте посмотрим на некоторые примеры этого на простом английском языке.
Джейк поздоровался с Биллом. Он ему не понравился, поэтому он повернулся и пошел другим путем.
Кто пошел другим путем? Джейк или Билл? В этом случае использование имен «Jake» и «Bill» похоже на использование имени типа. И «он», и «он» - это все равно, что использовать 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
ключевое слово, оно более полно для меня большую часть времени. Но я также склоняюсь называть свои переменные после типа, поэтому я не теряю никакой информации.
Тем не менее, иногда в зависимости от контекста, который я делаю исключения, такова природа чего-либо сложного, а программное обеспечение - ничто, если не сложное.