powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Неявное объявления переменных через var
25 сообщений из 182, страница 3 из 8
Неявное объявления переменных через 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
25 сообщений из 182, страница 3 из 8
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Неявное объявления переменных через var
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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