powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Неявное объявления переменных через var
25 сообщений из 182, страница 2 из 8
Неявное объявления переменных через var
    #39007199
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил
Код: c#
1.
2.
        TextReader rdr = new StreamReader();
        var rdr =  new StreamReader();




разница естьУгу. Для приведения к базовым и интерфейсам следует можно использовать непосредственное объявление типа. В этом случае нет повтора.

Или можно написать так:
Код: c#
1.
var rdr = (TextReader)new StreamReader();


В этом случае сразу видно, что идет приведение типов. А не ошибка программера, который при копипасте в одном мест изменил тип, а в другом забыл...
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007298
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileVarcom
Код: c#
1.
var formContent = new FormUrlEncodedContent(pairs);


Нормальное применение. Тип переменной ясно виден. Повторение типа не сделает этот код лучше.
Сделает.
Конструкция
Тип Имя =
воспринимется проще, чем
var Имя = какие-то действия, где есть тип
bazileСпорный пример. ... Если данный метод используется часто в коде, то использование var скорее всего оправдано т.к. программисты помнят тип возращаего значения.
Зачем полагаться на "помнят", "знают" и т.д.? Почему бы не прописать сразу явно, чтобы не было проблем ни у профей, ни у новичков? Почему, когды мы пишем код, то полагаем, что с ним будем работать либо только мы сами, либо профессионалы, которым и так все понятно?

Roman Mejtesдурная мода? кто тебе сказал, что она дурная? это твоё личное мнение так что такие вырожиния стоит держать при себе.
Microsoft:
https://msdn.microsoft.com/ru-ru/library/bb384061.aspx
Использование ключевого слова var может оказаться целесообразным в выражениях запроса, где определение точного конструируемого типа переменной запроса является сложной задачей.
Однако использование ключевого слова var может сделать код более трудным для понимания другими разработчиками. По этой причине в документации по C# ключевое слово var обычно используется только при необходимости.

Roman Mejtesесли тебе не понятно, какой тип объявляется в строке var formContent = new FormUrlEncodedContent(pairs), то проблема не в моде.
Компилятору понятно. Мне непонятно. Если ты работаешь со своим кодом, нет проблем с пониманием типов переменных. Ты уже давно привык к своим наименованиям и своей логике. Но, когда начинаешь разбираться с чужим кодом, начинается ад. Мало того, что код незнакомый, невнятный, так еще и невозможно визуально определить, какой параметр за что отвечает.

Roman MejtesБолее того, если навести курсор на тип var будет видно, что он объявлен вполне себе явно, это не тип variable.
Т.е. дополнительным физическим усилием мы исправляем визуальный недостаток кода. И во время изучения кода, начинаем прокачивать не только мозги, но и мышцы, целый день порхая курсором мыши от одной переменной к другой. Я уж не говорю про изучение кода в процессе отладки, когда отображение информации о типах отключается.
Вопрос: нахуа все это? Нельзя ли сразу внятно описывать типы, чтобы впоследствии не бегать курсором по экрану?

PallarisГлавное правильно имена переменным выбирать
Это ты скажи тем горе-программистам, которые обычно пишут говно-код. Сколько я ни работал в разных конторах, очень мало где пишут академически-правильный, вылизанный код. В большинстве случаев, пишут, как бог на душу положит. Да еще когда начальство все время подгоняет, вообще не до продумавыния имен. Вот и получается, мало того, что все имена невнятные, так еще и типизацию скрывают.

refregТоже так считал, пока не попал в контору, где обязательным стоит решарпер. Сейчас мнение изменилось на противоположное.
использование var вместо явного указания типа
Читал. "использование var принуждает вас более грамотно называть сами переменные." Разработчики решарпера выработали для себя определенную систему правил кодирования, придерживаются ее, и при этом, всерьез полагают, что все программисты в мире также стремятся придерживаться хороших манер программирования. А по факту получается, щас быстренько че-нить состряпаю, лишь бы начальству показать. И не важно, как оно внутри все выглядит, лишь бы работало. И никого использование var ни к чему не принуждает. Просто ухудшает читабельность кода и все.

Лично я считаю оправданным использование var в двух случаях:
1. Когда используются анонимные типы.
2. Когда используется переменная с очень длинным наименованием типа, либо с очень сложным типом (вложенные дженерики и др.)
Во всех остальных случаях использование var считаю неопраданным. Просто, кому-то очень лень писать корректный, визуально понятный код, вот и упрощает себе текущую работу, в ущерб будущим доработкам и будущим разработчикам.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007299
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Изопропил
Код: c#
1.
2.
   TextReader rdr = new StreamReader();
        var rdr =  new StreamReader();



А если так?

Код: c#
1.
   var f = File.OpenRead(path);



Офигительно понятно, какой тип у f
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007308
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ждем когда и var уберут. Не нужен он.

Код: c#
1.
2.
var foo = 1;
bar = 2;
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007312
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У ТС-а походу реально накипело. Устал чужой говно-код рефакторить видимо.

Varcom, узбагойтесь, проблема не в var :)
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007319
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAУ ТС-а походу реально накипело. Устал чужой говно-код рефакторить видимо.
Varcom, узбагойтесь, проблема не в var :)
Два месяца назад я работал в одной конторе, где сидели говно-кодеры и писали свой говно-код, но без var. Теперь я работаю в другой конторе, где тоже пишут говно-код, но теперь только через var. "Почувствуйте разницу".
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007321
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Изопропил
Код: c#
1.
2.
   TextReader rdr = new StreamReader();
        var rdr =  new StreamReader();




А если так?

Код: c#
1.
   var f = File.OpenRead(path);




Офигительно понятно, какой тип у fЧто вы привязались к тому, что возвращают методы? Вообще, обычно (не всегда), можно возврат из методов вставлять в код без предварительного объявления (и инициализации) переменной. А если уж сохранили возврат из методов в переменной, то потом эту переменную все равно придется куда-то всунуть. И уже, не так важно какой тип у переменной . Главное что бы там, куда ее потом засунули понимали, то что вернул этот метод.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007325
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg. И уже, не так важно какой тип у переменной .
очень важно, дабы лишнего не получить
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007327
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилrefreg. И уже, не так важно какой тип у переменной .
очень важно, дабы лишнего не получитьЯ бы от лишних денег не отказался, но ты видимо, не о них. Вопрос - как тип переменной может исправить неправильный возврат из метода?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007331
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregВопрос - как тип переменной может исправить неправильный возврат из метода?
он может ограничить доступ к ненужным свойствам/методам/полям
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007335
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилrefregВопрос - как тип переменной может исправить неправильный возврат из метода?
он может ограничить доступ к ненужным свойствам/методам/полямТо есть для неявного "приведения типа". Можно использовать явное плюс var. Но вообще, об этом уже было, как минимум два поста.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007347
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomКомпилятору понятно. Мне непонятно. Если ты работаешь со своим кодом, нет проблем с пониманием типов переменных. Ты уже давно привык к своим наименованиям и своей логике. Но, когда начинаешь разбираться с чужим кодом, начинается ад. Мало того, что код незнакомый, невнятный, так еще и невозможно визуально определить, какой параметр за что отвечает.

Это ты скажи тем горе-программистам, которые обычно пишут говно-код. Сколько я ни работал в разных конторах, очень мало где пишут академически-правильный, вылизанный код. В большинстве случаев, пишут, как бог на душу положит. Да еще когда начальство все время подгоняет, вообще не до продумавыния имен. Вот и получается, мало того, что все имена невнятные, так еще и типизацию скрывают.
слушай, ну в конце концов, стань начальником, настрой какую-нибудь систему контроля стилей кода на всех компах, так чтоб не компилировалось если есть var, следи за качеством кода - и не парься, делов то меньше, чем слов
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007355
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77стань начальником
Как не странно, но многих эта перспектива сильно пугает. Несмотря на уровень роста ЗП. По сути это совсем другая работа, может по этому. Одно дело критиковать без какой либо ответственности и не быть услышанным, другое принимать решения и за них отвечать.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007357
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregМожно использовать явное плюс var.

Оккам негодует
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007382
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилrefregМожно использовать явное плюс var.

Оккам негодуетТочно, именно он, и объясняет почему, необходимо использовать var
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007474
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T17-77стань начальником
Как не странно, но многих эта перспектива сильно пугает. Несмотря на уровень роста ЗП. По сути это совсем другая работа, может по этому. Одно дело критиковать без какой либо ответственности и не быть услышанным, другое принимать решения и за них отвечать.
есть варианты, я стал ведущим - и настроил стили кода (но var у меня присутствовал, зато всех заставлял писать полные имена типов - Int32 вместо int), а потом каждый день делал ревью кода для всех участников команды, потому что не хотел, чтобы система зарастала говнокодом, попутно занимался и самим программированием
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007570
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomskyANAУ ТС-а походу реально накипело. Устал чужой говно-код рефакторить видимо.
Varcom, узбагойтесь, проблема не в var :)
Два месяца назад я работал в одной конторе, где сидели говно-кодеры и писали свой говно-код, но без var. Теперь я работаю в другой конторе, где тоже пишут говно-код, но теперь только через var. "Почувствуйте разницу".я привык оперировать code metrics, а не ощущениями...

Снимите метрики, или загоните свой солюшн в SonarQube, увидите, что проблемы не в var.
Проведите рефакторинг и "почувствуйте разницу" :)

p.s.: в метрики ткните носом ваших говнокодеров
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008462
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomЯ предпочитаю явно задавать тип переменной:
Код: c#
1.
2.
FormUrlEncodedContent formContent = new FormUrlEncodedContent(pairs);
HttpResponseMessage response = client.PostAsync("token", formContent);


Плин, сообщения нельзя редактировать

Все зависит от ситуации.

В 1м случае однозначно var - иначе вы делаете работу аутиста.
Во втором предпочтительно явное указание типа, т.к. метод в отличие от конструктора не дает однозначное понятие о возвращаемом типе.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008466
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUserВо втором предпочтительно явное указание типа, т.к. метод в отличие от конструктора не дает однозначное понятие о возвращаемом типе.Ну и что? Подсказок в редакторе VS нету? В блокноте пишем?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008510
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу и что? Подсказок в редакторе VS нету? В блокноте пишем?
вызывающему коду зачастую незачем знать конкретный тип, возвращаемый методом,
меньше знаешь - крепче спишь
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008513
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КLameUserВо втором предпочтительно явное указание типа, т.к. метод в отличие от конструктора не дает однозначное понятие о возвращаемом типе.Ну и что? Подсказок в редакторе VS нету? В блокноте пишем?Толсто.

Прикинь, код не только пишут, но иногда и читают. Другие люди, во время Code Review.
И используют при этом Crusible к примеру.
Или бывает вливают (merge) к себе изменения из другой ветки и разрешают (resolve) конфликты.
Или просто историю изменений просматривают в TortoiseHG.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008523
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUserVarcomЯ предпочитаю явно задавать тип переменной:
Код: c#
1.
2.
FormUrlEncodedContent formContent = new FormUrlEncodedContent(pairs);
HttpResponseMessage response = client.PostAsync("token", formContent);


Плин, сообщения нельзя редактировать

Все зависит от ситуации.

В 1м случае однозначно var - иначе вы делаете работу аутиста.
Во втором предпочтительно явное указание типа, т.к. метод в отличие от конструктора не дает однозначное понятие о возвращаемом типе.
Не согласен, ИМХО во втором случае стоит переменные иначе назвать и сразу станет всё понятно:

Код: c#
1.
2.
var formContent = new FormUrlEncodedContent(pairs);
var responseMessage = httpClient.PostAsync("token", formContent);
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008527
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Ну и что? Подсказок в редакторе VS нету? В блокноте пишем?Толсто.

Прикинь, код не только пишут, но иногда и читают. Другие люди, во время Code Review.
И используют при этом Crusible к примеру.
Или бывает вливают (merge) к себе изменения из другой ветки и разрешают (resolve) конфликты.
Или просто историю изменений просматривают в TortoiseHG.Меня меньше всего интересуют проблемы этих добрых людей. :-)

Сами себе создают проблемы, пусть сами их и решают.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008530
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КСами себе создают проблемы, пусть сами их и решают.
ты ж писатель, а не читатель
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008533
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей КСами себе создают проблемы, пусть сами их и решают.
ты ж писатель, а не читатель Пусть не читают, если не умеют.
...
Рейтинг: 0 / 0
25 сообщений из 182, страница 2 из 8
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Неявное объявления переменных через var
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]