powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Неявное объявления переменных через var
182 сообщений из 182, показаны все 8 страниц
Неявное объявления переменных через var
    #39006438
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пошла дурная мода объявлять переменные в исходниках через var:
Код: c#
1.
2.
var formContent = new FormUrlEncodedContent(pairs);
var response = client.PostAsync("token", formContent);


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


Плин, сообщения нельзя редактировать
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006442
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Плохо" и "хорошо" -- они всегда по сравнению с чем-то. var foo = bar.GetBaz(); -- попахивает, ваши примеры -- вполне себе оправданное использование автоматического вывода типов.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006445
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Varcom,

а что не System.Net.Http.HttpResponseMessage response ?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006449
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomПошла дурная мода объявлять переменные в исходниках через va
Тебя кто-то назначил "главным по моде в C#" чтобы с ходу вешать ярлыки? Данное ключевое слово является отличным помошником в деле сокращения кода. Вопрос только в уместности применения в конкретных ситуациях.

Varcom
Код: c#
1.
var formContent = new FormUrlEncodedContent(pairs);


Нормальное применение. Тип переменной ясно виден. Повторение типа не сделает этот код лучше.

Varcom
Код: c#
1.
var response = client.PostAsync("token", formContent);


Спорный пример. Я бы решил, что тип response имеет тип Task<TSomething> из-за суффикса async. Если данный метод используется часто в коде, то использование var скорее всего оправдано т.к. программисты помнят тип возращаего значения. Если нет, то возможно лучше указать явно. Говорю "скорее всего" и "возможно" потому что каждая команда решает этот вопрос по разному.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006697
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
VarcomТак делают у нас на работе, так делают знакомые фрилансеры. Че мне делать в данной ситуации? Убеждать что это нехорошо, или смириться и делать как все?
Клятые пэхаписты и жабаскриписты.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006698
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Varcom,

дурная мода? кто тебе сказал, что она дурная? это твоё личное мнение так что такие вырожиния стоит держать при себе.
если тебе не понятно, какой тип объявляется в строке var formContent = new FormUrlEncodedContent(pairs), то проблема не в моде.
Более того, если навести курсор на тип var будет видно, что он объявлен вполне себе явно, это не тип variable.
лично мне удобнее писать var
а) это короче
б) читаемость такого когда может ухудшиться, только если мы получаем объект из метода аля
var a = object.GetValue(); вот тогда можно вполне объявить явно.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006717
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomПошла дурная мода
У слоупоков? Этой возможности уже лет 7 как.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006721
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для какого-нибудь двух-строчного foreach (var user in userAccounts) - вполне себе. Главное правильно имена переменным выбирать
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006779
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomУбеждать что это нехорошо, или смириться и делать как все?
Это кто Вам такое сказал, что это не хорошо?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006803
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Varcom, если вам что-то не нравится (вне зависимости от обоснованности вашего мнения), то при постановке задачи фрилансерам будьте любезны в ТЗ приложить документ "Стандарты кодирования". Нет документа - придирки не обоснованы, если код работает.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006814
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Varcom,

Тоже так считал, пока не попал в контору, где обязательным стоит решарпер. Сейчас мнение изменилось на противоположное.

использование var вместо явного указания типа
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006913
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
refregVarcom,

Тоже так считал, пока не попал в контору, где обязательным стоит решарпер. Сейчас мнение изменилось на противоположное.

использование var вместо явного указания типа

Почитал

оттудаиспользование var принуждает к более качественному API. Во-первых, вы получите оптимальные типы, когда позволяете компилятору получать самому тип возвращаемого значения метода или свойства. И еще вы вынуждены будете более правильно называть свои методы, чтобы они явно указывали на то, что возвращают;
Господи, если программист для любой переменной тип Object указывает, тогда да, var в данном случае использовать предпочтительнее.

Это ничего, что такая конструкция не компилируется? И от того что я назову свой метод правильно, компилироваться не будет?

Код: c#
1.
2.
3.
4.
 private var t(var y)
        {
            return y;
        }
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006918
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,
var равнносильно Object
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006929
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оттудаиспользование var принуждает к более качественному API.

эт вряд ли.

по существу - Linq без автоматического вывода типа херово будет
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39006972
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Cat2]refregVarcom,
Код: c#
1.
2.
3.
4.
 private var t(var y)
        {
            return y;
        }


что за бред var, это не тип вообще, это просто синтаксический сахар
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007046
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
[quote Roman Mejtes]Cat2refregVarcom,
Код: c#
1.
2.
3.
4.
 private var t(var y)
        {
            return y;
        }



что за бред var, это не тип вообще, это просто синтаксический сахар

Оттуда, с ХабраИ еще вы вынуждены будете более правильно называть свои методы, чтобы они явно указывали на то, что возвращают;
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007061
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quote Cat2]Roman MejtesCat2пропущено...

что за бред var, это не тип вообще, это просто синтаксический сахар

Оттуда, с ХабраИ еще вы вынуждены будете более правильно называть свои методы, чтобы они явно указывали на то, что возвращают;
Это вы неверно поняли. Речь шла о следующем контексте:

var result = GetData(name);
и
var result = GetTaxFor(name);

в обоих случаях методы вернут, к примеру, decimal, но при вызове в первом случае это будет неочевидно
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007063
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
[quote Arm79]Cat2Roman Mejtesпропущено...


пропущено...

Это вы неверно поняли. Речь шла о следующем контексте:

var result = GetData(name);
и
var result = GetTaxFor(name);

в обоих случаях методы вернут, к примеру, decimal, но при вызове в первом случае это будет неочевидно
Во втором тоже, если такса в йенах
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007067
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Во втором тоже, если такса в йенах

как связаны decimal и йены? В конце концов, если бы нужны были налоги в йенах, это экзотика, и было бы отражено, например:

var result = GetTaxFor(name, Countires.Japan);
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007072
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Arm79Cat2Во втором тоже, если такса в йенах

как связаны decimal и йены? В конце концов, если бы нужны были налоги в йенах, это экзотика, и было бы отражено, например:

var result = GetTaxFor(name, Countires.Japan);
А как связаны с decimal TaxFor?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007074
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,

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



разница есть
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39007175
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Arm79Cat2,

Я бы перевел как ПолучитьНалогДля(имя...). Налог - это деньги, обычно считаются в decimal, если нет выделенного класса Money
А я бы перевел - "ставка для". Надо без снобизма называть по-русски. В русском языке одно слово обычно имеет одно значение.
ПолучитьСтавкуНалогаДля()
...
Рейтинг: 0 / 0
Неявное объявления переменных через 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
Неявное объявления переменных через var
    #39008536
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей КНу и что? Подсказок в редакторе VS нету? В блокноте пишем?
вызывающему коду зачастую незачем знать конкретный тип, возвращаемый методом,
меньше знаешь - крепче спишьС var переименовывать меньше при рефакторинге.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008555
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Толсто.

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

Сами себе создают проблемы, пусть сами их и решают.У тебя сегодня толстое настроение?

В каком из перечисленных пунктов добрые люди создают сами себе проблемы?
Когда ревьювят чужой код? Или когда вливают чужие изменения? Или когда просматривают их?

Ты всё пишешь сам, или всецело доверяешь своим коллегам и ни разу не было конфликтов при мёрже? :)
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008559
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И кстати Code Review и системы контроля версий избавляют от проблем, а не создают их :)
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008648
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИзопропилпропущено...

вызывающему коду зачастую незачем знать конкретный тип, возвращаемый методом,
меньше знаешь - крепче спишьС var переименовывать меньше при рефакторинге.


Это можно считать и недостатком. Рефакторинг ради рефакторинга редко бывает в реале, а значит изменения в логике.
Так как вроде как думаешь, что все ок, а на деле - надо править и бизнес логику тоже.
Был бы явный тип - там пришлось бы смотреть на код, и изменения стали бы очевидны(есть такая вероятность). А var изменять не требуется - все компилируется. Но не работает так, как нужно.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008667
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129,

Алексей же сказал - он только пишет, не читает
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008672
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Рефакторинг ради рефакторинга редко бывает в реале, а значит изменения в логике.Всё наоборот. Целью рефакторинга (при TDD) является удаление повторов в коде. И не дай те бог, при этом изменить бизнес-логику. Все тесты покраснеют.
Кстати, var - прекрасное ключевое словечко, избавляющее от повторов (не плодите сущностей!)

И еще, попробуйте писать без переменных! Не считая, разумеется, переменных в циклических конструкциях, ибо там переменные являются частью этих конструкций.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008702
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
var не следует/невозможно применять в следующих случаях.
1.
Код: c#
1.
2.
Expression<Func<bool>> e1 = () => true;
            Func<bool> e2 = () => false;


Компилятор не сможет вывести, что мы хотим Expression или Func
2.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 class Base
        {
             
        }

        private class MyClass : Base
        {

        }
  private static void Main(string[] args)
        {
            Base b=new MyClass();
        }


Полиморфизм типов.
3.
Код: c#
1.
int res;


Для out параметров или областей видимости вложенных в текущую, например ветви if.
4. Когда хотим иметь тип отличный от используемого по умолчанию, но и то можно указать суффиксом.
Код: c#
1.
var u = 654654u;


5. если хотим implicit преобразования.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
   public class Test
        {
             public long Value { get; private set; }

            public Test(long value)
            {
                Value = value;
            }

            public static implicit operator DateTime(Test t)
            {
                return new DateTime(t.Value);
            }

            public static implicit operator int(Test t)
            {
                return (int) t.Value;
            }
        }
        private static void Main(string[] args)
        {
            Test t = new Test(654987654);
            DateTime dt = t;
        }


В остальных случаях всегда нежно применять var!
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008749
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилD129,

Алексей же сказал - он только пишет, не читаетЯ просто имею собственное мнение.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008756
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Алексей Кпропущено...
С var переименовывать меньше при рефакторинге.


Это можно считать и недостатком. Рефакторинг ради рефакторинга редко бывает в реале, а значит изменения в логике.
Так как вроде как думаешь, что все ок, а на деле - надо править и бизнес логику тоже.
Был бы явный тип - там пришлось бы смотреть на код, и изменения стали бы очевидны(есть такая вероятность). А var изменять не требуется - все компилируется. Но не работает так, как нужно.Какие-то мнимые неудобства, решаемые нормальным именованием идентификаторов в программе, не стоят усилий, потраченных на набивание имён типов, которые могут быть вычислены компилятором.

А может вывод типов в других местах, таких как generic-аргументы методов и типы лямбда-выражений, тоже не нужен?

зы: Как же удобен вывод типа результата метода в TypeScript, как же этого, на пару с анонимными классами, не хватает в C#.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008757
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Вот чего непонятно, почему операцию "приведение типов" надо навешивать, как обязанность, на переменную? Неужели неявное приведение лучше, может, понятнее явного?
Обязанность переменной хранить инфу - всё!

Все 5 пунктов можно написать через var. Ну, может, кроме 3-го - если очень хочется увидеть, в случае чего, предупреждение об не инициализированной переменной.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008763
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129...Рефакторинг ради рефакторинга редко бывает в реале...
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008774
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.D129...Рефакторинг ради рефакторинга редко бывает в реале...

авторЕсли реальность не соответствует моей логике, тем хуже для реальности.(с)
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008847
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregВсе 5 пунктов можно написать через var. .
Продемонстрируй.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008860
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВrefregВсе 5 пунктов можно написать через var. .
Продемонстрируй.
Код: c#
1.
var e2 = (Func<bool>)(() => false);

Остальное по аналогии.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008862
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot skyANA]LameUserпропущено...
Не согласен, ИМХО во втором случае стоит переменные иначе назвать и сразу станет всё понятно:
Код: c#
1.
2.
var formContent = new FormUrlEncodedContent(pairs);
var responseMessage = httpClient.PostAsync("token", formContent);



Серьезно? А если в коде десять-двадцать типов <Something>Content ?
responseMessage - вообще ни о чем не говорит.

Алексей КМеня меньше всего интересуют проблемы этих добрых людей. :-)
Сами себе создают проблемы, пусть сами их и решают.
А потом после таких горе-программистов приходится вычищать авгиевы конюшни.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008885
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Меня меньше всего интересуют проблемы этих добрых людей. :-)

Сами себе создают проблемы, пусть сами их и решают.У тебя сегодня толстое настроение?

В каком из перечисленных пунктов добрые люди создают сами себе проблемы?
Когда ревьювят чужой код? Или когда вливают чужие изменения? Или когда просматривают их?

Ты всё пишешь сам, или всецело доверяешь своим коллегам и ни разу не было конфликтов при мёрже? :)Мы используем SVN в блокировочном режиме, бранчи используем редко. В обычный день количество конфликтов слияния в офисе равно нулю. :-)
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008892
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomskyANAпропущено...

Серьезно? А если в коде десять-двадцать типов <Something>Content ?Пример в студию!

VarcomresponseMessage - вообще ни о чем не говорит.А httpClient, объявленный где-то там выше тоже небось ни о чём не говорит?
Следовательно где-то ниже по коду и responseMessage перестанет о чём-то говорить, как ты его не объяви :)

А мне например очевидно, что httpClient - это HttpClient, а не MongoClient, или что-то ещё. А значит он возвращает HttpResponseMessage, а не что-то иное.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008903
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAVarcomпропущено...


Серьезно? А если в коде десять-двадцать типов <Something>Content ?Пример в студию!

VarcomresponseMessage - вообще ни о чем не говорит.А httpClient, объявленный где-то там выше тоже небось ни о чём не говорит?
Следовательно где-то ниже по коду и responseMessage перестанет о чём-то говорить, как ты его не объяви :)

А мне например очевидно, что httpClient - это HttpClient, а не MongoClient, или что-то ещё. А значит он возвращает HttpResponseMessage, а не что-то иное.+1

И тип responseMessage мне не интересен на данном этапе, потому что на данном этапе я не работаю с его содержимым. Скорее всего далее будет вызов:
Код: c#
1.
ParseMessage(responseMessage);


А вот внутри этого метода уже будет видно тип параметра и понятно, что параметр содержит.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008911
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAVarcomпропущено...
Серьезно? А если в коде десять-двадцать типов <Something>Content ?Пример в студию!
А ты попробуй распарсить HTML DOM. Примеров будет более чем достаточно.

skyANAVarcomresponseMessage - вообще ни о чем не говорит.А httpClient, объявленный где-то там выше тоже небось ни о чём не говорит?
Говорит. Как правило, код просматривается сверху-вниз, а не наоборот.
Есть элементарные правила хорошего тона при написании программных продуктов:
- не писать простыней сплошного кода, по возможности, разбивать код на логические блоки.
- не объявлять неявно переменные
- комментировать сложные блоки кода
Если придерживаться их, ваш код будет понятен как вам, так и всякому кто будет его просматривать, независимо от среды, в которой просматривается код.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008918
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Varcom- комментировать сложные блоки кода.Код должен быть понятен без комментариев. Комментарии нужно применять только в крайнем случае.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008920
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomskyANAпропущено...
Пример в студию!
А ты попробуй распарсить HTML DOM. Примеров будет более чем достаточно.Читай о замене логики полиморфизмом.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008929
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg
И еще, попробуйте писать без переменных! Не считая, разумеется, переменных в циклических конструкциях, ибо там переменные являются частью этих конструкций.

Ага. А вы попробуйте потом разобраться, что этот код без переменных делает.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008936
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregvar e2 = (Func<bool>)(() => false);


Тут компилятор может вывести тип.
А ты предлагаешь кроме var, еще и указывать тип. Кошмар!
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008940
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КVarcom- комментировать сложные блоки кода.Код должен быть понятен без комментариев. Комментарии нужно применять только в крайнем случае.
Это комментарии можно не писать в крайнем случае.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008943
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА может вывод типов в других местах, таких как generic-аргументы методов и типы лямбда-выражений, тоже не нужен?
Вот только там он и нужен.
Поддерживать залямбденный код - дебаггировать и из только из синтаксиса понять, почему не сработала бизнес логика - это для гениев.

Так что я довольно часто расписываю лямбды на циклы опять - чтобы из массива найти проблемный элемент, и починить.
Обратно потом не заворачиваю, бывает, что еще и лог добавляю об ошибке.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008948
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Алексей КА может вывод типов в других местах, таких как generic-аргументы методов и типы лямбда-выражений, тоже не нужен?
Вот только там он и нужен.
Поддерживать залямбденный код - дебаггировать и из только из синтаксиса понять, почему не сработала бизнес логика - это для гениев.Получается, что я гений. :-) Равно как и все остальные, кто пишет логику не только на LINQ, но и на SQL.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008949
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КVarcomпропущено...
А ты попробуй распарсить HTML DOM. Примеров будет более чем достаточно.Читай о замене логики полиморфизмом.
При чем тут полиморфизм? Я ж не говорю, сделать один обработчик на разные типы. В DOM куча классов, имеющих примерно одинаковое название, соответственно, из названия переменной тяжело будет понять ее тип.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008950
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КVarcom- комментировать сложные блоки кода.Код должен быть понятен без комментариев. Комментарии нужно применять только в крайнем случае.
Алексей, скажи в какой компании ты работаешь. В случае чего, при поиске работы, я занесу ее в черный список.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008952
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Было так:
Код: c#
1.
var instances = _db.Instances.Where(x => x.FarmId == farmId && x.MachineName == type).ToList();




Стало так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
List<Instance>instances = null;

if (IsSpesificMachine(type))
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.MachineName == type).ToList();
}
else
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.Type == type).ToList();
}



был var....
И чем он мне помог при внедрении новой логики?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008956
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomАлексей Кпропущено...
Читай о замене логики полиморфизмом.
При чем тут полиморфизм? Я ж не говорю, сделать один обработчик на разные типы.Но оперировать ты везде будешь базовым классом Element. В этом случае всё равно, о каком конкретном элементе идёт речь.

А если потребуется что-то конкретное, то тип элемента должен содержаться в имени переменной, вроде divElement или formElement.
VarcomВ DOM куча классов, имеющих примерно одинаковое название, соответственно, из названия переменной тяжело будет понять ее типЭтого не понял.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008964
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВrefregvar e2 = (Func<bool>)(() => false);


Тут компилятор может вывести тип.
А ты предлагаешь кроме var, еще и указывать тип. Кошмар!Я ничего не предлагаю. Ты сказал невозможно. Я сказал можно. Вот и всё...

ЗЫ. А как компилятор тут может вывести тип?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008965
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КD129пропущено...

Вот только там он и нужен.
Поддерживать залямбденный код - дебаггировать и из только из синтаксиса понять, почему не сработала бизнес логика - это для гениев.Получается, что я гений. :-) Равно как и все остальные, кто пишет логику не только на LINQ, но и на SQL.
Ну да.
Только от ума - горе бывает.
Я сталкивался с кодом, который написан людьми, умнее меня. Причем есть разные направления умности - у одних память уникальная, им помнить о значениях 30 глобальных переменных - пустяк. Другие - гении генеричности и чемпионы абстракций. Хотя всего-то надо было...
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008971
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Алексей К,

Было так:
Код: c#
1.
var instances = _db.Instances.Where(x => x.FarmId == farmId && x.MachineName == type).ToList();




Стало так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
List<Instance>instances = null;

if (IsSpesificMachine(type))
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.MachineName == type).ToList();
}
else
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.Type == type).ToList();
}



был var....
И чем он мне помог при внедрении новой логики?В такой ситуации у меня часто возникает желание провести выделение метода.
Код: c#
1.
2.
3.
4.
if (IsSpesificMachine(type))
    return _db.Instances.Where(x => x.FarmId == farmId && x.MachineName == type).ToList();

return _db.Instances.Where(x => x.FarmId == farmId && x.Type == type).ToList();
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008973
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129refregИ еще, попробуйте писать без переменных! Не считая, разумеется, переменных в циклических конструкциях, ибо там переменные являются частью этих конструкций.

Ага. А вы попробуйте потом разобраться, что этот код без переменных делает.Не, Ну совсем без переменных нельзя. Я же сказал попробуйте. Иногда присваивают переменной. И сразу ее используют, причем один раз. И всё. Зачем ее вводить?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008978
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregD129пропущено...


Ага. А вы попробуйте потом разобраться, что этот код без переменных делает.Не, Ну совсем без переменных нельзя. Я же сказал попробуйте. Иногда присваивают переменной. И сразу ее используют, причем один раз. И всё. Зачем ее вводить?Чтобы можно было смотреть отладчиком её содержимое.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39008991
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кrefregпропущено...
Не, Ну совсем без переменных нельзя. Я же сказал попробуйте. Иногда присваивают переменной. И сразу ее используют, причем один раз. И всё. Зачем ее вводить?Чтобы можно было смотреть отладчиком её содержимое.То есть переменная не нужна? Но мы ее вводим, сначала, что бы приведение типа сделать, потом что бы в отладчике посмотреть...
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009003
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К
У нас один умный написал так (пишу по памяти саму идею) :

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
object dataToWork = GetData();// тут приходит разное 


MakeAllGoodAndCool((dynamic)dataToWork);



        




private static void MakeAllGoodAndCool(int dynamicData)
{
	...		
}
private static void MakeAllGoodAndCool(Item dynamicData)
{
		...	
}



И еще две перегруженных функции. И вызов этот был в цикле - правда, не очень большом - 5-10 элементов...


Я по случаю работал с профайлером - и замерил скорость вызова(на примере, не в реальной аппликации). На простейшей формочке с кнопочкой она была 300 милисекунд.
Подгружались 56 неймспейсов со всех подсоединенных сборок.

Но "клин код" - switch - case ему писать было некашерно....
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009006
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregАлексей Кпропущено...
Чтобы можно было смотреть отладчиком её содержимое.То есть переменная не нужна? Но мы ее вводим, сначала, что бы приведение типа сделать, потом что бы в отладчике посмотреть...

Ага. Подумайте о том, что и вам будет проще через полгода понять - что это тут происходит.
Да и изменение хирургическое тоже будет легче делать - когда тело (функции) уже расчленено.
:-)
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009028
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Алексей К
У нас один умный написал так (пишу по памяти саму идею) :
......................................
Но "клин код" - switch - case ему писать было некашерно....
Читай про визитор и двойную диспетчерезацию.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009030
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregНе, Ну совсем без переменных нельзя.
Можно и нужно! Это такой же рудимент как и циклы.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009033
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Алексей К
У нас один умный написал так (пишу по памяти саму идею)Зато не скучно. :-)
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009036
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomАлексей Кпропущено...
Код должен быть понятен без комментариев. Комментарии нужно применять только в крайнем случае.
Алексей, скажи в какой компании ты работаешь. В случае чего, при поиске работы, я занесу ее в черный список.У тебя разрыв шаблона?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009038
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Стало так:
Код: c#
1.
2.
3.
4.
5.
6.
var query = _db.Instances.Where(x => x.FarmId == farmId);
query = IsSpesificMachine(type) ? 
    query.Where(x => x.MachineName == type) : 
    query.Where(x => x.Type == type);

var instances = query.ToList();
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009250
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Алексей К
Код: c#
1.
2.
3.
4.
if (IsSpesificMachine(type))
    return _db.Instances.Where(x => x.FarmId == farmId && x.MachineName == type).ToList();

return _db.Instances.Where(x => x.FarmId == farmId && x.Type == type).ToList();



Не могу молчать!

Код: c#
1.
return _db.Instances.Where(x => x.FarmId == farmId && x.Field( IsSpesificMachine(type) ? "MachineName" : "Type") == type).ToList();
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009251
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КУ тебя разрыв шаблона?
Не, это этап эволюционирования срача - переход на личности.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009271
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныНе, это этап эволюционирования срача - переход на личности.
меньше пяти страниц - какой же это срач?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009349
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomskyANAпропущено...
Пример в студию!
А ты попробуй распарсить HTML DOM. Примеров будет более чем достаточно.А ты попробуй распарсить JSON, или XML, или LESS, или...

Конкретный пример будет?

А то каких я только парсеров не видел, а вместе с ними и лексеров, и эвалюаторов, и грамматик.
ANTLR наше все! :)
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009357
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КVarcomпропущено...

При чем тут полиморфизм? Я ж не говорю, сделать один обработчик на разные типы.Но оперировать ты везде будешь базовым классом Element. В этом случае всё равно, о каком конкретном элементе идёт речь.

А если потребуется что-то конкретное, то тип элемента должен содержаться в имени переменной, вроде divElement или formElement.
VarcomВ DOM куча классов, имеющих примерно одинаковое название, соответственно, из названия переменной тяжело будет понять ее типЭтого не понял.+1

В первую очередь DOM - это инструмент, с помощью которого JavaScript видит содержимое HTML-страницы и состояние браузера.
А в жабаскрипте какбе только var и есть :)

Возможно ТС о доступе к DOM через компонент WebBrowser, ждемс примерс...
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009369
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще задача: "А ты попробуй распарсить HTML DOM", - глупость какая-то. Дерево DOM - это уже результат парсинга HTML :)
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009460
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КLameUserВо втором предпочтительно явное указание типа, т.к. метод в отличие от конструктора не дает однозначное понятие о возвращаемом типе.Ну и что? Подсказок в редакторе VS нету? В блокноте пишем?

Когда разработчик читает код, особенно чужой код, ему неудобно наводить мышкой.
При разработке в больших проектах 90% - это чтение кода, 10% это написание. (моя практика)
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009486
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUserАлексей Кпропущено...
Ну и что? Подсказок в редакторе VS нету? В блокноте пишем?

Когда разработчик читает код, особенно чужой код, ему неудобно наводить мышкой.Авторство читаемого кода влияет на удобство использования мыши в редакторе кода?! Неожиданно...
LameUserПри разработке в больших проектах 90% - это чтение кода, 10% это написание. (моя практика)Да ну никак не помогают типы переменных при чтении кода. Только захламляют его ненужной информацией.

И в очередной раз, может теперь будет получен ответ: большой проект - это сколько чего в нём должно быть?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009494
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТолько захламляют его ненужной информацией.
это пять!
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009509
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей КТолько захламляют его ненужной информацией.
это пять!
Код: c#
1.
FileStream fileStream = File.Open(path, FileMode.Open);

Не бесит?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009514
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КLameUserпропущено...


Когда разработчик читает код, особенно чужой код, ему неудобно наводить мышкой.Авторство читаемого кода влияет на удобство использования мыши в редакторе кода?! Неожиданно...
LameUserПри разработке в больших проектах 90% - это чтение кода, 10% это написание. (моя практика)Да ну никак не помогают типы переменных при чтении кода. Только захламляют его ненужной информацией.

И в очередной раз, может теперь будет получен ответ: большой проект - это сколько чего в нём должно быть?

Большой проект подразумевает, что в нем работает команда из не менее 10 разработчиков одновременно, достаточно долгий срок.

Видимо у вас слишком мало опыта работы с большими системами.
Один раз навести мышку - увидеть подсказку возвращаемого типа можно. Но этот тип нужно запомнить и держать в голове при дальнейшем чтении кода, а если таких мест несколько? Сколько вы в голове наведений мыши держать сможете одновременно?

var это всего лишь синтаксический сахар, а не панацея. Я сам всегда применяю var, когда его применение однозначно (все конструкторы например), когда неоднозначно - я сильно задумаюсь, стоит ли его применять.
Нужно понимать, с какой целью ты хочешь его применить, а не потому, "что так модно" и лепить где попало и ссылаться "мол мышкой наведут, тип увидят".
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009521
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUserБольшой проект подразумевает, что в нем работает команда из не менее 10 разработчиков одновременно, достаточно долгий срок.А если 9 человек, то проект не большой? 10 человек - это только программисты, или начальники, менеджеры и аналитеки в том числе? А долгий срок - это сколько?

LameUserВидимо у вас слишком мало опыта работы с большими системами.Судить людей - занятие неблагодарное.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009549
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К
Код: c#
1.
FileStream fileStream = File.Open(path, FileMode.Open);


Не бесит?
с чего беситься?
дальнейшей код реально требует FileStream,
а не просто Stream?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009565
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей К
Код: c#
1.
FileStream fileStream = File.Open(path, FileMode.Open);


Не бесит?
с чего беситься?
дальнейшей код реально требует FileStream,
а не просто Stream?Метод содержит 7 строчек. Даже думать об этом не хочу, масштабы не те.

А если это так важно, то об этом надо думать тогда, когда придумываешь тип результата метода File.Open.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009569
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилс чего беситься?Рядом два одинаковых слова.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009770
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
безотносительно возвращаемого типа...

Код: c#
1.
2.
3.
var xMyType = ...

MyType x = ...

в первом случае весть текст нужно набивать руками.
во втором случае чуть менее чем весь MyType будет набран интеллисенсом.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009781
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИзопропилпропущено...
это пять!
Код: c#
1.
FileStream fileStream = File.Open(path, FileMode.Open);

Не бесит?
Алексей, все твои доводы (как и высказывания, что код не должен содержать комментариев) говорят лишь о том, что у тебя мало опыта разработки, а тем более, мало опыта в разборе чужого кода. Когда годами изучаешь чужой код, начинаешь ощущать недостатки в подходах к написанию исходников.
В нормальной ситуации, программист не назовет переменную fileStream. Имя переменной, прежде всего, должно отражать смысловую нагрузку того контекста, в котором используется переменная. Это может быть logStream, xmlInputStream, или как-нибудь еще, но никак не fileStream.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009793
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА если это так важно, то об этом надо думать тогда, когда придумываешь тип результата метода File.Open.
его уже придумали

зачем тебе в интеллисенсе лишние методы и свойства?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009807
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИзопропилс чего беситься?Рядом два одинаковых слова.Бери больше. Четыре! :)
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009808
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. Восемь!
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009836
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomАлексей Кпропущено...
Код: c#
1.
FileStream fileStream = File.Open(path, FileMode.Open);

Не бесит?
Алексей, все твои доводы (как и высказывания, что код не должен содержать комментариев) говорят лишь о том, что у тебя мало опыта разработки, а тем более, мало опыта в разборе чужого кода. Когда годами изучаешь чужой код, начинаешь ощущать недостатки в подходах к написанию исходников.Это ты сейчас сам себя хвалишь, какой ты офигенный?

Запомни, комментировать надо предметную область. А она должна быть описана в техническом задании и, при необходимости, в пояснительной записке к программе. А при наличии достаточной технической документации реализация в комментировании не нуждается. Разумеется, речь идёт о нормальной реализации.

VarcomВ нормальной ситуации, программист не назовет переменную fileStream. Имя переменной, прежде всего, должно отражать смысловую нагрузку того контекста, в котором используется переменная. Это может быть logStream, xmlInputStream, или как-нибудь еще, но никак не fileStream.Никогда не говори никогда.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009838
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей КА если это так важно, то об этом надо думать тогда, когда придумываешь тип результата метода File.Open.
его уже придумалиТогда принципиального значения это не имеет. Вопрос чисто в удобстве и предпочтениях автора.
Изопропилзачем тебе в интеллисенсе лишние методы и свойства?Тысячей больше, тысячей меньше, какая разница?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009849
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНет. Восемь! Я запутался.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009854
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAНет. Восемь! Я запутался. В 10 словах, которые сам и написал. Дела :)
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009889
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЗапомни, комментировать надо предметную область.
Знавал я таких чудо-программистов. У нас в компании один поставил в коде Sleep(5000). А через пару лет мы всем отделом пытались догадаться, зачем здесь стоит эта пауза, и можно ли ее убрать без ущерба работоспособности программы. Пришлось отыскивать автора и узнавать у него. Оказалось, паузу поставили не зря, но в данный момент она неактуальна.

Алексей КА она должна быть описана в техническом задании и, при необходимости, в пояснительной записке к программе. А при наличии достаточной технической документации реализация в комментировании не нуждается.
Ты когда-нибудь видел ТЗ, в котором расписан алгоритм с точностью до последнего оператора?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009902
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomАлексей КЗапомни, комментировать надо предметную область.
Знавал я таких чудо-программистов. У нас в компании один поставил в коде Sleep(5000).Разве кто-то утверждал, что применять комментарии в программе запрещено? По твоему описанию это как раз крайний случай, требующий комментирования.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39009905
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomАлексей КА она должна быть описана в техническом задании и, при необходимости, в пояснительной записке к программе. А при наличии достаточной технической документации реализация в комментировании не нуждается.
Ты когда-нибудь видел ТЗ, в котором расписан алгоритм с точностью до последнего оператора?К счастью - нет. Кроме текстовой части ТЗ должно содержать схемы и математические формулы.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010156
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyбезотносительно возвращаемого типа...

Код: c#
1.
2.
3.
var xMyType = ...

MyType x = ...


в первом случае весть текст нужно набивать руками.
во втором случае чуть менее чем весь MyType будет набран интеллисенсом.Если стоит решарпер, то левую часть и символ равно вообще не надо набивать
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010183
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregAntonariyбезотносительно возвращаемого типа...

Код: c#
1.
2.
3.
var xMyType = ...

MyType x = ...


в первом случае весть текст нужно набивать руками.
во втором случае чуть менее чем весь MyType будет набран интеллисенсом.Если стоит решарпер, то левую часть и символ равно вообще не надо набивать он научился читать мысли?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010206
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyrefregпропущено...
Если стоит решарпер, то левую часть и символ равно вообще не надо набивать он научился читать мысли?Сам в шоке
В принципе, если не в курсе, набиваешь правую часть, ставишь точку с запятой, alt+enter - он ставит var и предлагает несколько вариантов для переменной. Обычно среди предлагаемых есть удачный.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010280
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregAntonariyпропущено...
он научился читать мысли?Сам в шоке
В принципе, если не в курсе, набиваешь правую часть, ставишь точку с запятой, alt+enter - он ставит var и предлагает несколько вариантов для переменной. Обычно среди предлагаемых есть удачный.
все эти IntelliSense примочки больше проблем создают, чем пользы. Быстрее руками всё набить
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010294
MrVoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
FileStream fileStream = File.Open(path, FileMode.Open);
FileStream logStream = File.Open(path, FileMode.Open);
var fileStream = File.Open(path, FileMode.Open);
var logStream = File.Open(path, FileMode.Open);


Что читается проще?


>> использование var принуждает вас более грамотно называть сами переменные
>> использование var принуждает к более качественному API

Пример. Книга "Programming Entity Framework: DbContext" (Julia Lerman & Rowan Miller) - страница 117:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
private static void PrintLodgingInfo()
{
    using (var context = new BreakAwayContext())
    {
        var hotel = (from d in context.Lodgings
                     where d.Name == "Grand Hotel"
                     select d).Single();

        PrintChangeTrackingInfo(context, hotel);

        var davesDump = (from d in context.Lodgings
                         where d.Name == "Dave's Dump"
                         select d).Single();

        context.Lodgings.Remove(davesDump);

        PrintChangeTrackingInfo(context, davesDump);

        var newMotel = new Lodging { Name = "New Motel" };

        context.Lodgings.Add(newMotel);

        PrintChangeTrackingInfo(context, newMotel);

    }
}


Это просто настоящий зоопарк. Я, например, с трудом читаю такой говнокод, потому что "davesDump", "hotel", "newMotel" - это всё тип Lodging! И где же тут "качественное API" и "грамотное название переменных"?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010297
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomАлексей КЗапомни, комментировать надо предметную область.
У нас в компании один поставил в коде Sleep(5000). А через пару лет мы всем отделом пытались догадаться
5000 - это говно-константа, нужно так:
Код: c#
1.
2.
3.
private static int AcomplishingRequestDelayTime = 5000;
.....
Sleep(AcomplishingRequestDelayTime);



и комментарий теперь заложен в имени переменной
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010306
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrVoidЭто просто настоящий зоопарк. Я, например, с трудом читаю такой говнокод, потому что "davesDump", "hotel", "newMotel" - это всё тип Lodging! И где же тут "качественное API" и "грамотное название переменных"? Не пойму что не нравится - ну названия отелей, ну "такие у них имена". Причем тут апи. Покажи, как надо!
Давай вспомним название темы. Если бы вместо var стояли бы Lodging, тя все бы устраивало?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010315
MrVoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregMrVoidЭто просто настоящий зоопарк. Я, например, с трудом читаю такой говнокод, потому что "davesDump", "hotel", "newMotel" - это всё тип Lodging! И где же тут "качественное API" и "грамотное название переменных"? Не пойму что не нравится - ну названия отелей, ну "такие у них имена". Причем тут апи. Покажи, как надо!
Давай вспомним название темы. Если бы вместо var стояли бы Lodging, тя все бы устраивало?

Нет, ну если бы было написано "davesDumpLodging", тогда другое дело. В дальнейшем нифига не понятно, что это за тип - и каждый раз надо возвращацо назад. В любом случае необходимо внятное название переменных! А то тут "hotel", а тут "dump" - и ищи, к чьей жопе яйца...
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010323
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrVoidrefregпропущено...
Не пойму что не нравится - ну названия отелей, ну "такие у них имена". Причем тут апи. Покажи, как надо!
Давай вспомним название темы. Если бы вместо var стояли бы Lodging, тя все бы устраивало?

Нет, ну если бы было написано "davesDumpLodging", тогда другое дело. В дальнейшем нифига не понятно, что это за тип - и каждый раз надо возвращацо назад. В любом случае необходимо внятное название переменных! А то тут "hotel", а тут "dump" - и ищи, к чьей жопе яйца...В каком дальнейшем месте это будет непонятно? зачем вам знать тип промежуточных переменных?
зачем вам возвращаться назад, чтоб узнать этот тип, если этот тип определен в любом месте. Он будет явно объявлен, в любой последующей части кода, он будет точно тем же типом. Что за бредни
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010351
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ппц тупизм развели.

весь этот срач имеет смысл только если код процедуры не влезает в экран. если влезает, то абсолютно покуй как объявлять - весь код на ладони и понятен.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010681
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КD129пропущено...

У нас один умный написал так (пишу по памяти саму идею)Зато не скучно. :-)

Зато проэкт закрыли - из-за завала в производительности.

Заказчику продали ЭТО для работы на селеронах 2003 года. А оно не побежало.
Там не только это было, естественно, а вообще много зауми, вместо экономично работающего кода.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010682
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesзачем вам знать тип промежуточных переменных?
зачем вам возвращаться назад, чтоб узнать этот тип, если этот тип определен в любом месте. Он будет явно объявлен, в любой последующей части кода, он будет точно тем же типом. Что за бредни
Есть разница - читать код, и запомнить, какой был обьявлен тип без дополнительных действий, только глазами - или нужно обязательно наводиться, отвлекаться.

Разрабатывать то хорошо, но приходится же еще и поддерживать - и в контексте аджайлов - в проэкте практически нет "своего кода" -
каждый кусок многократно переписывается случайными людьми -
и каждый раз, когда надо понять, что же делает конкретный кускок, а он только "варит" - это дополнительная трудность.
Только из-за политики (если заставляют писать var - не где это разумно, а везде, для возможной "легкости переименования" - которая может и не наступить, а вот читать то все равно приходится.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010726
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrVoid>> использование var принуждает вас более грамотно называть сами переменные
>> использование var принуждает к более качественному API

Я вот не люблю принуждение. :-) И тому подобные ролевые игры.

Если мне тяжело и неудобно работать (а хотябы и у меня свой стиль мышления (какого-никакого)) то я начинаю работать хуже.
Тратится творческая энергия на преодоление неудобств и "принуждений" - а на основную задачу остается меньше.
Проблема в формальном подходе.
var написал? Да! Молодец! - а с какого перепугу это вообще критерий? Вместо работающего кода - отчет о количестве использованых варежек и покрытии юнит-тестами. Которые сами по-себе не гарантируют ничего .
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010919
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129MrVoid>> использование var принуждает вас более грамотно называть сами переменные
>> использование var принуждает к более качественному API

Я вот не люблю принуждение. :-) И тому подобные ролевые игры.

Если мне тяжело и неудобно работать (а хотябы и у меня свой стиль мышления (какого-никакого)) то я начинаю работать хуже.
Тратится творческая энергия на преодоление неудобств и "принуждений" - а на основную задачу остается меньше.
Проблема в формальном подходе.
var написал? Да! Молодец! - а с какого перепугу это вообще критерий? Вместо работающего кода - отчет о количестве использованых варежек и покрытии юнит-тестами. Которые сами по-себе не гарантируют ничего .


Без этого никак в командных проектах. Должен быть выдержан единый стиль кода.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39010955
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUserБез этого никак в командных проектах. Должен быть выдержан единый стиль кода.

Кому должен?
Код должен работать - и в зависимости от задачи, он может быть разным.

Вот мне написали как можно сократить следующий код:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
List<Instance>instances = null;

if (IsSpesificMachine(type))
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.MachineName == type).ToList();
}
else
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.Type == type).ToList();
}



Нахлобуч - однозначно спец.
:-)


Код: c#
1.
2.
3.
4.
5.
6.
var query = _db.Instances.Where(x => x.FarmId == farmId);
query = IsSpesificMachine(type) ? 
    query.Where(x => x.MachineName == type) : 
    query.Where(x => x.Type == type);

var instances = query.ToList();



Блестяще. И не так уж сложно. И клин код.

А вот теперь, ситуация - я сделал паблиш (это код веб сайта).
И один пользователь жалуется, что он все сделал, а не работает.
И надо добавить лог, потому, что раз жалуется один, значит испорченные данные в базе - конкретно у него.
Но какие? (базу писал не я).
Так что лог должен выглядеть примерно так:


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
List<Instance>instances = null;

if (IsSpesificMachine(type))
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.MachineName == type).ToList();
        if (instances.Count > 0)
       {
            log.DebugFormat("Task will be created for one instance {0}" ,type);
        }
        else
        {
             log.WarnFormat("Istanсe {0} not exist!",type);
        }
}
else
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.Type == type).ToList();
}



И предположим, что это случилось через 3 месяца после написания круто закрученного кода.
В какой ситуации, будет менее рисковано добавив строку лога, сразу сделать паблиш (да, да, так тоже бывает!)?

Мы все-таки техники, а не художники или скульпторы. И делаем машины, а не произведения дизайнерской фантазии.
А машина должна быть ремонтопригодна.
Должен быть лючок для смазки, и сменный фильтр, когда откручиваешь одну гаечку - сдвигаешь крышечку, поменял, закрутил - и не надо газорезом разрезать отполированный и заваренный намертво корпус.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011199
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129LameUserБез этого никак в командных проектах. Должен быть выдержан единый стиль кода.

Кому должен?
Код должен работать - и в зависимости от задачи, он может быть разным.

Вот мне написали как можно сократить следующий код:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
List<Instance>instances = null;

if (IsSpesificMachine(type))
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.MachineName == type).ToList();
}
else
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.Type == type).ToList();
}



Нахлобуч - однозначно спец.
:-)


Код: c#
1.
2.
3.
4.
5.
6.
var query = _db.Instances.Where(x => x.FarmId == farmId);
query = IsSpesificMachine(type) ? 
    query.Where(x => x.MachineName == type) : 
    query.Where(x => x.Type == type);

var instances = query.ToList();



Блестяще. И не так уж сложно. И клин код.

А вот теперь, ситуация - я сделал паблиш (это код веб сайта).
И один пользователь жалуется, что он все сделал, а не работает.
И надо добавить лог, потому, что раз жалуется один, значит испорченные данные в базе - конкретно у него.
Но какие? (базу писал не я).
Так что лог должен выглядеть примерно так:


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
List<Instance>instances = null;

if (IsSpesificMachine(type))
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.MachineName == type).ToList();
        if (instances.Count > 0)
       {
            log.DebugFormat("Task will be created for one instance {0}" ,type);
        }
        else
        {
             log.WarnFormat("Istanсe {0} not exist!",type);
        }
}
else
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.Type == type).ToList();
}



И предположим, что это случилось через 3 месяца после написания круто закрученного кода.
В какой ситуации, будет менее рисковано добавив строку лога, сразу сделать паблиш (да, да, так тоже бывает!)?

Мы все-таки техники, а не художники или скульпторы. И делаем машины, а не произведения дизайнерской фантазии.
А машина должна быть ремонтопригодна.
Должен быть лючок для смазки, и сменный фильтр, когда откручиваешь одну гаечку - сдвигаешь крышечку, поменял, закрутил - и не надо газорезом разрезать отполированный и заваренный намертво корпус.

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

Самописные поделки на одного прогера можно писать как угодно (если не требуется их дальнейшее развитие), а корпоративные проекты - как правило так не пишутся.

Спорить можно бесконечно, но best practice для меня в командных проектах - это единый стиль кода.
Если я руководитель проекта - я прошу соблюдать участников проекта единый стиль кода. Если кто-то не хочет этого делать - я снимаю этого человека с проекта.
Если я исполнитель - я соблюдаю единый стиль, если этого требует РП.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011252
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUser если этого требует РП.

Все знают, к чему приводит бездумное - "упал отжался".
Но в программировании - еще не все.
Соблюдение правил ради соблюдения правил как раз и приводит к тому, что проэкт становится неразвиваемым.
Если не считать развитием - добавление к существуюещму застывшему в юнит тестах коду новых слоев кодированного льда.
А если считать - то пожалуйста.

Если бы в той реальной функции, которую я изменил - реализовать корпоративный стандарт (всей той фирмы, где я работаю) -
то у меня не было бы права вставить в функцию ни строчки, чтобы не портить клин код и результаты юнит тестов.
Зато была бы возможность добавить "слушателя" который перехватил бы вызов этой функции, и подменил бы коллекцию, которую я не имел бы права (стандарты!) создавать с помощью оператора new (Это грязный код!) а обязан был бы описать во внешнем конфигурационном хмл, и подгрузить стандартными для корпорации способами.
Плавали, знаем. А начиналось все хорошо.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011258
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUser В вашем случае это рефакторинг
Разве добавление логов и изменение бизнес-логики - это рефакторинг?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011359
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129LameUser В вашем случае это рефакторинг
Разве добавление логов и изменение бизнес-логики - это рефакторинг?

Вот вы сами и подтвердили, что в вашем случае это не стиль написания кода, а рефакторинг + изменение БЛ.

На счет предыдущего поста - не стоит впадать в крайности, без дисциплины проект обречен.
И как вы заметили - дисциплина не должна сводиться к "упал отжался", а наоборот - к согласию всех участников проекта с правилами/требованиями.

В общем я не хотел вас, или кого-то еще обидеть, просто делюсь своим опытом и мнением.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011391
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUser просто делюсь своим опытом и мнением.
Я тоже.
Просто правила имеют свойство размножаться и укрепляться. Отменяет их только полный провал проэкта и фирмы.
Что у нас и происходит сейчас.
Была иллюзия - у руководства - очень похожая на то, что вы говорите. И ее выполнили, поэтапно доведя до абсурда, и нигде не нашлось механизма, который этот абсурд остановил бы.
Так я исходя из опыта - и заявляю, что лучше бы код работал быстро, чем был искуственно и сверх всякой меры синтаксисически зачищен.
Начинают ведь с хорошего - переменные с маленькой буквы, функции с большой - ну как с этим поспоришь... Но само право у руководства влезать в это - это беда.
Они начинают вводить еще правила, и еще - исключительно из благих намеряний (и жажды деятельности). Потом кто-нибудь умный предалагает сделать супер-конфигурабельность, потом еще....

Я видел разный код - и у меня не занимало много времени привыкнуть к какому-нибудь стилю (видал я и функции по 1500 строк, и реализацию классов без использования классов). Но вот политики юнит тестов (которые даже ухитряются проверять, вызвали некий приватный метод или нет!) мне не нравятся больше всего.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011598
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris5000 - это говно-константа, нужно так:
Код: c#
1.
2.
3.
private static int AcomplishingRequestDelayTime = 5000;
.....
Sleep(AcomplishingRequestDelayTime);


и комментарий теперь заложен в имени переменной
Как думаешь, какой код будет более понятный:
Код: c#
1.
2.
3.
private static int AcomplishingRequestDelayTime = 5000;
.....
Sleep(AcomplishingRequestDelayTime);

или
Код: c#
1.
2.
3.
4.
5.
6.
/// <summary>
/// Задержка выполнения в 5 сек, необходимая для того, чтобы вызываемое устройство успело обработать данные
/// </summary>
private static int AcomplishingRequestDelayTime = 5000;
.....
Sleep(AcomplishingRequestDelayTime);


?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011737
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129
Код: c#
1.
2.
3.
4.
5.
6.
var query = _db.Instances.Where(x => x.FarmId == farmId);
query = IsSpesificMachine(type) ? 
    query.Where(x => x.MachineName == type) : 
    query.Where(x => x.Type == type);

var instances = query.ToList();




Блестяще. И не так уж сложно. И клин код.

А вот теперь, ситуация - я сделал паблиш (это код веб сайта).
И один пользователь жалуется, что он все сделал, а не работает.
И надо добавить лог, потому, что раз жалуется один, значит испорченные данные в базе - конкретно у него.
Но какие? (базу писал не я).
Так что лог должен выглядеть примерно так:


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
List<Instance>instances = null;

if (IsSpesificMachine(type))
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.MachineName == type).ToList();
        if (instances.Count > 0)
       {
            log.DebugFormat("Task will be created for one instance {0}" ,type);
        }
        else
        {
             log.WarnFormat("Istanсe {0} not exist!",type);
        }
}
else
{
	instances = _db.Instances.Where(x => x.FarmId == farmId && x.Type == type).ToList();
}

Сказали, добавить логи - вот, и добавь - че макароны делать?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
var query = _db.Instances.Where(x => x.FarmId == farmId);
query = IsSpesificMachine(type) ? 
    query.Where(x => x.MachineName == type) : 
    query.Where(x => x.Type == type);

var instances = query.ToList();

if (IsSpesificMachine(type))
{
        if (instances.Any())
       {
            log.DebugFormat("Task will be created for one instance {0}" ,type);
        }
        else
        {
             log.WarnFormat("Istanсe {0} not exist!",type);
        }
}
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011795
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129
Я вот не люблю принуждение. :-)....

"Ты не один" (с) - я разделяю ваше мнение.
Беспредельный формализм убивает живое и работающее. Как всегда - должна быть найдена "золотая середина"

Насчет var - в foreach-ах - самое то. Часто явное определение типа - очень "многа букаф" - больше чем тело цикла.

Насчет лога. (Все равно давно уже офтоп)
В вашем примере
1) форматирование строки уже отнимает ресурсы
2) запись лога очень желательно формализовать - так чтобы можно было его внятно парсить и автоматически анализировать, а не судорожно рыскать ctrl-F в тысячестрочных простынях
Давеча Элон Маск жаловался, что его инженерам приходится орудовать hex-вьюверами в терабайтах телеметрии для поиска причин аварии Фалкона


Я для этого дела использую интерфейс с делегатом вида

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 public event Action<string> LogDelegate ;

 void  LogEvent(object[] objs)
 {
    if (LogDelegate != null) 
         {
              StringBuilder sb  = new StringBuilder() ;
               Array.ForEach(objs,  ob => sb.Append(   (ob==null ? 'null' : ob.ToString())+"; "   )  //разделитель - обязательно для парсинга
               LogDelegate(sb.ToString()) ; 
        }
 }

 
// В соответствующих критичных местах ставятся вызовы вида
 LogEvent( new object{ (good_or_bad ? 413246: -67867), " text about this case",for_indexator, obj1, obj2...}) ;

// или 

 LogEvent( new object{ -324132, "unbelievable  happened" , obj1, obj2...}) ;



1) первый параметр - просто число-маркер для поиска в тексте кода ,
мнемоническое правило - положительное число - это нормально, отрицательное - как минимум подозрительно;
индексатор(ы) цикла(ов) - если есть; список обьектов - сколько уместно в данном контексте

2) если лог-делегат не проинициализирован - этот вызов вообще ничего не делает - даже не тратит время и
память на форматное преобразование строк debug-лога - это очень важно если циклы прокручиваются миллионы раз

3) если какой-то обьект нужно "поставить на контроль" - это можно сделать даже run-time на работающем 24/7 приложении - лог-делегат выдаст кучу поддающегося парсингу текста - доступного для структурного и статистического анализ, который тоже можно делать на лету ; хотч конечно нужно быть готовым к некоторому торможению
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011831
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример с вставкой логирования плох. Надо писать как понятнее и что очень важно как короче сейчас, а не как потом логировать и дебажить. Надо будет логировать поменяешь. Писать кучу говнокода с мыслями о том что вдруг надо будет брейкпоинт сунуть или переменную залогировать зло. Пиши как можно короче. Понадобится перепишешь на длинное, отдебажишь и вернешь как надо. Мало что так же полезно как короткий код в нашем деле.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011912
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomPallaris5000 - это говно-константа, нужно так:
Код: c#
1.
2.
3.
private static int AcomplishingRequestDelayTime = 5000;
.....
Sleep(AcomplishingRequestDelayTime);


и комментарий теперь заложен в имени переменной
Как думаешь, какой код будет более понятный:
Код: c#
1.
2.
3.
private static int AcomplishingRequestDelayTime = 5000;
.....
Sleep(AcomplishingRequestDelayTime);

или
Код: c#
1.
2.
3.
4.
5.
6.
/// <summary>
/// Задержка выполнения в 5 сек, необходимая для того, чтобы вызываемое устройство успело обработать данные
/// </summary>
private static int AcomplishingRequestDelayTime = 5000;
.....
Sleep(AcomplishingRequestDelayTime);


?
Читал в одной книжке... Вобщем, щас не модно юзать слип. Надо всякие Spin, Task и прочие модные штуки. Все 23-летние сеньоры заворачивают на собеседованиях, если ты заюзаешь Sleep или goto - им на лекциях в ВУЗе говорили, что это не круто.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011917
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112goto - им на лекциях
об этом уже полвека повизгивают

http://khpi-iip.mipk.kharkiv.edu/library/extent/dijkstra/pp/ewd215.html
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011946
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилAlexey2112goto - им на лекциях
об этом уже полвека повизгивают

http://khpi-iip.mipk.kharkiv.edu/library/extent/dijkstra/pp/ewd215.html
Да какая разница, что говорил чел, который уже давно умер и не знает, какие щас дела? В его время он, может, и задавал тон, а сейчас - "извини, подвинься". Любой современный 23-летний сеньор должен всегда подвергать сомнению и проверять любую чушь, которую говорили старые маразматики в какие-то там стародавние времена. Лично я несколько раз использовал goto и это было клёво.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011947
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomPallaris5000 - это говно-константа, нужно так:
Код: c#
1.
2.
3.
private static int AcomplishingRequestDelayTime = 5000;
.....
Sleep(AcomplishingRequestDelayTime);


и комментарий теперь заложен в имени переменной
Как думаешь, какой код будет более понятный:
Код: c#
1.
2.
3.
private static int AcomplishingRequestDelayTime = 5000;
.....
Sleep(AcomplishingRequestDelayTime);

или
Код: c#
1.
2.
3.
4.
5.
6.
/// <summary>
/// Задержка выполнения в 5 сек, необходимая для того, чтобы вызываемое устройство успело обработать данные
/// </summary>
private static int AcomplishingRequestDelayTime = 5000;
.....
Sleep(AcomplishingRequestDelayTime);


?

Откуда новый разраб будет знать, что где-то в объявлении переменной стоит комментарий? Он читает метод, и понятия об этом не имеет. Потом, если значение переменной поменяется с 5000 на 6000 - нужно еще и комментарий найти и в нем поменять. Далее, комментарий полностью дублирует смысл, заложенный в названии переменной, и только отвлекает внимание, его приходится читать. Так что комментарий тут совсем не нужен
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011951
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112,

Дейкстра для тебя - маразматик?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39011954
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилAlexey2112,

Дейкстра для тебя - маразматик?

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

Дейкстра для тебя - маразматик?
Я его пробовал начинать читать - какую-то книжку - с первых же страниц нихрена не понятно. Я понимаю, что он типа крутой и писал только для конченых матано-ботанов, но, пля, простыми словами он писать в принципе, чтоли, не мог, чтобы свои идеи пояснять?

Теорию относительности можно рассказать в исписанных страницах формул. А можно нормальными словами. "Если вы не можете ребёнку пояснить ваши идеи, значит, вы сами в них толком не разбираетесь" - сказал чувак покруче какого-то там Дейкстры.

Я вот всех этих умников - эйнштейны, дейкстры и прочие гейтсы - ставлю по рангу, по ранжиру - кто круче, кто самый крутой, кто так, с горы хрен погулять вышел.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012002
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чё вы все так на него подрачиваете? Начитались всяких луговских, которые на него того того... А Дейкстра всего лишь написал пару трактатов из мира процедурного программирования - в его годы это было модным - а ООП он обосрал. Ну и где щас его процедуры, а где ООП?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012120
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112,

ну и где? по моему обе в заднице
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012141
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosAlexey2112,

ну и где? по моему обе в заднице
Сказал Випрос, набирая текст на клаве, созданной с помощью ООП, в программе, написанной по принципам ООП, и отправляя сообщение на форум, написанный на ООП-языке программирования.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012154
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112,

блабла
никакого ооп в нтмл нет
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012234
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisОткуда новый разраб будет знать, что где-то в объявлении переменной стоит комментарий? Он читает метод, и понятия об этом не имеет.Контекстную подсказку отменили? Не заметил, что это был xml-комментарий?

PallarisПотом, если значение переменной поменяется с 5000 на 6000 - нужно еще и комментарий найти и в нем поменять. Далее, комментарий полностью дублирует смысл, заложенный в названии переменной, и только отвлекает внимание, его приходится читать. Так что комментарий тут совсем не нуженКомментировать нужно не только классы, методы и переменные, но и блоки кода.
Когда разбираешь код, по комментариям видишь ЧТО программа в данном блоке кода делает. Когда знаешь ЧТО она делает, легко разобраться КАК она это делает. И такой прямой метод ознакомления с кодом гораздо более эффективен, чем обратный , когда видя КАК программа чего-то делает, пытаешься понять, ДЛЯ ЧЕГО это все. А еще надо учитывать, что нет идеальных программистов. Все мы делаем ошибки в коде и периодически пишем какие-то некорректные алгоритмы. И вот, встречая такие некорректные фрагменты чужого кода, вообще впадаешь в ступор. С ходу очень тяжело понять, то ли программист накосил, то ли ты в предметной области не до конца разобрался. Будь в этом месте комментарий, проблем было бы на порядок меньше.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012235
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosAlexey2112,

блабла
никакого ооп в нтмл нет
html - язык программирования будущего. И джаваскрипт тоже. И css. Так говорят все 23-летние сеньоры.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012241
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomБудь в этом месте комментарий, проблем было бы на порядок меньше.
23-летние сеньоры все как один утверждают, что информативные имена лучше, чем многословные комментарии, поясняющие очевидные вещи.

int wellIRememberAStoryFromMyEarlyLifeWhenIWas...AndTheyLiveLongAndHappy.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012244
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
int wellIRememberAStoryFromMyEarlyLifeWhenIWas...AndTheyLiveLongAndHappy = 666;
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012344
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112,

тебя чем-то сильно обидел 23-летний senior?

.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012347
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
новый мем
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012429
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Varcom
Код: c#
1.
2.
3.
4.
5.
6.
/// <summary>
/// Задержка выполнения в 5 сек, необходимая для того, чтобы вызываемое устройство успело обработать данные
/// </summary>
private static int AcomplishingRequestDelayTime = 5000;
.....
Sleep(AcomplishingRequestDelayTime);


?
Во так и рождаются всякие венгерские нотации а-ля private static int n_ms_AcomplishingRequestDelayTime = 5000; . Для тех, кто значения задержек, таймаутов и прочей около-временн о й ерунды в виде int'ов или float'ов (и для тех, кто дублирует код в комментариях, ставит их в неправильных местах и вообще неверно декомпозируют проблему) уготован отдельный комфортабельный котёл.

Код: c#
1.
2.
3.
4.
5.
6.
7.
private static TimeSpan AcomplishingRequestDelay = TimeSpan.FromSeconds(5);

private static PerformDeviceOperation(Action<Device> operation)
{
    operation(device);
    Sleep(AcomplishingRequestDelay);
}
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012441
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч,

Чё ты агришься?

int delay = 5000 чаще всего рождаются "на коленке надо вставить заглушку - в офис придём, всё перепишем". Но нет ничего более постоянного, чем временное.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012557
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomКогда разбираешь код, по комментариям видишь ЧТО программа в данном блоке кода делает.


Код должен быть написан так, чтоб без комментариев было понятно. Бывают, конечно, исключения. Но обычно, если приходится писать комментарий, то стоит задуматься - скорее всего косячишь

авторИ такой прямой метод ознакомления с кодом гораздо более эффективен, чем обратный, когда видя КАК программа чего-то делает, пытаешься понять, ДЛЯ ЧЕГО это все


Это все - это многостраничная лапша? Ну тогда да. Хотя тот, кто ее родил, вряд ли оставит после себя комментарии

И вот, встречая такие некорректные фрагменты чужого кода, вообще впадаешь в ступор.

Для этого в командах есть code review. Понятно, что если чел писал сам без присмотра, то тут ничего не поделаешь
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012729
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisКод должен быть написан так, чтоб без комментариев было понятно.Из области сферической лошади в вакууме. С таким же успехом можно сказать: "код должен быть написан так, чтобы не было косяков и глюков". Столь же идеалистично, сколь и недостижимо.
Впрочем, если ты пишешь идеальный код, можешь начинать давать уроки.

PallarisVarcomИ вот, встречая такие некорректные фрагменты чужого кода, вообще впадаешь в ступор.Для этого в командах есть code review.Угу. Код Ревью очень мало где практикуют. А там где практикуют, проверяют, в основном, чтобы не было явных ляпов. Никто не проверяет корректность и полноту названий объектов, логичность компоновки кода и др. смысловые конструкции.

PallarisПонятно, что если чел писал сам без присмотра, то тут ничего не поделаешь И так 99% кода. Если ты можешь заставить всех программеров мира писать идеальный код - вперед! Весь мир вздохнет с облегчением и начнет боготворить тебя.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012868
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код должен приносить деньги
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012874
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarcomУгу. Код Ревью очень мало где практикуют. А там где практикуют, проверяют, в основном, чтобы не было явных ляпов. Никто не проверяет корректность и полноту названий объектов, логичность компоновки кода и др. смысловые конструкции.
Мне интересно, а можно ли в код ревью, которое длится несколько минут-полчаса сделать это самое ревью, хоть сколько-то отличающееся от банального "а чё это у тебя отступы не по феншую и названия переменных не говорящие?"? Может ли ревьюрящий оценить правильность применения паттернов, протекаемость абстракций, композицию классов и модулей - т. е. то, что действительно стоит поревьюить, а не сраные названия переменных и методов? Или вот ещё встречал всякую чушь, типа "методы должны влезать в экран". А если, млять, это длинная процедура - мне её специально и искусственно резать на методы, чтобы формальность соблести, хотя это только ухудшит понимаемость процедурного алгоритма, для которого скачки по коду туда-сюда по вызовам методов - только хуже?

Может, не стоит тратить ресурсы на всякую муть, раз уж не выделяют время на полноценное ревью на полдня минимум со вниканием в решаемую проблему и т. п.? А то многие себе внедряют всякие канбаны, аджайлы и прочие ревью только потому, что начитались где-то умных слов, и тоже хотят "чтобы как у людей". Но при этом местная специфика "цигель-цигель - заказчик звонит и просит ускорить процесс" и "должно быть сделано ещё вчера, и мне плевать, что в ТЗ не было тестов и валидаций с глубокой обработкой исключений и вообще всё было на словах, а ТЗ написано перед сдачей проекта - вы должны были догадаться сами" убивает на корню все эти благие начинания.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012875
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилкод должен приносить деньги
Если так люлишь деньги - найми проституток, открой наркопритон или торгуй оружием. Программирование - не для быстрого зарабатывания большого бабла.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012889
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кодревью одна из самых полезных практик и не имеет ничего общего с "начитались канбанов"
Писать без кодревью это как дом строить без прораба.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012892
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Кодревью одна из самых полезных практик и не имеет ничего общего с "начитались канбанов"
Писать без кодревью это как дом строить без прораба.
Так я не спорю. Я про то, что у многих вместо канбанов и кодревью одна пародия на это.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012951
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112Лично я несколько раз использовал goto и это было клёво.
В сишарпе это единственный способ фуллструиться сквозь кейсы свича.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39012964
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фуллшта?

...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39013314
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyфуллшта?


fallthrough - фолсруиться, деревня. По айнглицки совсем не шпрехаешь, дюд? Тебе вообще знакомы такие слова, как консенсус, пролонгировать, ланч и прочие, распространённые среди наших "лэт ми спик фром май харт"?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39013349
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112Antonariyфуллшта?


fallthrough - фолсруиться, деревня. По айнглицки совсем не шпрехаешь, дюд? Тебе вообще знакомы такие слова, как консенсус, пролонгировать, ланч и прочие, распространённые среди наших "лэт ми спик фром май харт"?это все от лукавого. с помощью "хреновина" и "фигачить" можно описать большинство бизнес-процессов.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39013367
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112Denis.Кодревью одна из самых полезных практик и не имеет ничего общего с "начитались канбанов"
Писать без кодревью это как дом строить без прораба.
Так я не спорю. Я про то, что у многих вместо канбанов и кодревью одна пародия на это.У кого у многих? :) Ты хоть на одном собеседовании спросил какое там у них кодревью?
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39013372
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.новый мемсейчас мы его развеем фразой...

23-летний team lead

:)
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39013408
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112Alexey2112Лично я несколько раз использовал goto и это было клёво.
В сишарпе это единственный способ фуллструиться сквозь кейсы свича.
В стандартной библиотеке я встречал несколько мест, где он используется, видимо для перфоманса. Плюс когда используешь yield return например, компилятор нагенерит его использование.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39013416
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANADenis.новый мемсейчас мы его развеем фразой...

23-летний team lead

:)
Завидуйте, сучки.



skyANAAlexey2112пропущено...

Так я не спорю. Я про то, что у многих вместо канбанов и кодревью одна пародия на это.У кого у многих? :) Ты хоть на одном собеседовании спросил какое там у них кодревью?
На одном мне сразу сказали, что у них канбан. Про кодревью никто не говорил и я не спрашивал.

Я не против кодревью. Я тут регулярно свой говнокод выкладываю, чтобы ты, тот и ещё этот парень его проревьюили. Но это так, кусочки. А если кто-то мой код глубоко будет ревьюить - я только рад. Бесплатно учат, как надо делать (если действительно - как НАДО). Только если на это специально время выделяется, а не "давай, в конце рабочего дня, быстро проревьюй его код и по домам".
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39013419
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112сучки
В хорошем смысле.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39013426
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112В хорошем смысле.в хорошем смысле, слово сучка имеет определение самки собаки.
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39013500
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesAlexey2112В хорошем смысле.в хорошем смысле, слово сучка имеет определение самки собаки.
Это в плохом смысле.

[spoiler]Почти в самом начале.

YouTube Video
...
Рейтинг: 0 / 0
Неявное объявления переменных через var
    #39013503
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда... эмм... какой-то лысый дядька с очками на аватаре пытается обозваться или уличить в чём-то обидном тут, я же не обижаюсь.

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


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