|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
ИзопропилАлексей КНу и что? Подсказок в редакторе VS нету? В блокноте пишем? вызывающему коду зачастую незачем знать конкретный тип, возвращаемый методом, меньше знаешь - крепче спишьС var переименовывать меньше при рефакторинге. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 09:40 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
Алексей КskyANAпропущено... Толсто. Прикинь, код не только пишут, но иногда и читают. Другие люди, во время Code Review. И используют при этом Crusible к примеру. Или бывает вливают (merge) к себе изменения из другой ветки и разрешают (resolve) конфликты. Или просто историю изменений просматривают в TortoiseHG.Меня меньше всего интересуют проблемы этих добрых людей. :-) Сами себе создают проблемы, пусть сами их и решают.У тебя сегодня толстое настроение? В каком из перечисленных пунктов добрые люди создают сами себе проблемы? Когда ревьювят чужой код? Или когда вливают чужие изменения? Или когда просматривают их? Ты всё пишешь сам, или всецело доверяешь своим коллегам и ни разу не было конфликтов при мёрже? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 09:57 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
И кстати Code Review и системы контроля версий избавляют от проблем, а не создают их :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 09:58 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
Алексей КИзопропилпропущено... вызывающему коду зачастую незачем знать конкретный тип, возвращаемый методом, меньше знаешь - крепче спишьС var переименовывать меньше при рефакторинге. Это можно считать и недостатком. Рефакторинг ради рефакторинга редко бывает в реале, а значит изменения в логике. Так как вроде как думаешь, что все ок, а на деле - надо править и бизнес логику тоже. Был бы явный тип - там пришлось бы смотреть на код, и изменения стали бы очевидны(есть такая вероятность). А var изменять не требуется - все компилируется. Но не работает так, как нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 11:15 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
D129, Алексей же сказал - он только пишет, не читает ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 11:24 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
D129Рефакторинг ради рефакторинга редко бывает в реале, а значит изменения в логике.Всё наоборот. Целью рефакторинга (при TDD) является удаление повторов в коде. И не дай те бог, при этом изменить бизнес-логику. Все тесты покраснеют. Кстати, var - прекрасное ключевое словечко, избавляющее от повторов (не плодите сущностей!) И еще, попробуйте писать без переменных! Не считая, разумеется, переменных в циклических конструкциях, ибо там переменные являются частью этих конструкций. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 11:27 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
var не следует/невозможно применять в следующих случаях. 1. Код: c# 1. 2.
Компилятор не сможет вывести, что мы хотим Expression или Func 2. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Полиморфизм типов. 3. Код: c# 1.
Для out параметров или областей видимости вложенных в текущую, например ветви if. 4. Когда хотим иметь тип отличный от используемого по умолчанию, но и то можно указать суффиксом. Код: c# 1.
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.
В остальных случаях всегда нежно применять var! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 11:52 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
ИзопропилD129, Алексей же сказал - он только пишет, не читаетЯ просто имею собственное мнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 12:34 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
D129Алексей Кпропущено... С var переименовывать меньше при рефакторинге. Это можно считать и недостатком. Рефакторинг ради рефакторинга редко бывает в реале, а значит изменения в логике. Так как вроде как думаешь, что все ок, а на деле - надо править и бизнес логику тоже. Был бы явный тип - там пришлось бы смотреть на код, и изменения стали бы очевидны(есть такая вероятность). А var изменять не требуется - все компилируется. Но не работает так, как нужно.Какие-то мнимые неудобства, решаемые нормальным именованием идентификаторов в программе, не стоят усилий, потраченных на набивание имён типов, которые могут быть вычислены компилятором. А может вывод типов в других местах, таких как generic-аргументы методов и типы лямбда-выражений, тоже не нужен? зы: Как же удобен вывод типа результата метода в TypeScript, как же этого, на пару с анонимными классами, не хватает в C#. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 12:46 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
ЕвгенийВ, Вот чего непонятно, почему операцию "приведение типов" надо навешивать, как обязанность, на переменную? Неужели неявное приведение лучше, может, понятнее явного? Обязанность переменной хранить инфу - всё! Все 5 пунктов можно написать через var. Ну, может, кроме 3-го - если очень хочется увидеть, в случае чего, предупреждение об не инициализированной переменной. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 12:47 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
D129...Рефакторинг ради рефакторинга редко бывает в реале... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 12:52 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
Denis.D129...Рефакторинг ради рефакторинга редко бывает в реале... авторЕсли реальность не соответствует моей логике, тем хуже для реальности.(с) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 13:00 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
refregВсе 5 пунктов можно написать через var. . Продемонстрируй. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 13:46 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
ЕвгенийВrefregВсе 5 пунктов можно написать через var. . Продемонстрируй. Код: c# 1.
Остальное по аналогии. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 13:56 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
[quot skyANA]LameUserпропущено... Не согласен, ИМХО во втором случае стоит переменные иначе назвать и сразу станет всё понятно: Код: c# 1. 2.
Серьезно? А если в коде десять-двадцать типов <Something>Content ? responseMessage - вообще ни о чем не говорит. Алексей КМеня меньше всего интересуют проблемы этих добрых людей. :-) Сами себе создают проблемы, пусть сами их и решают. А потом после таких горе-программистов приходится вычищать авгиевы конюшни. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 13:57 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... Меня меньше всего интересуют проблемы этих добрых людей. :-) Сами себе создают проблемы, пусть сами их и решают.У тебя сегодня толстое настроение? В каком из перечисленных пунктов добрые люди создают сами себе проблемы? Когда ревьювят чужой код? Или когда вливают чужие изменения? Или когда просматривают их? Ты всё пишешь сам, или всецело доверяешь своим коллегам и ни разу не было конфликтов при мёрже? :)Мы используем SVN в блокировочном режиме, бранчи используем редко. В обычный день количество конфликтов слияния в офисе равно нулю. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 14:11 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
VarcomskyANAпропущено... Серьезно? А если в коде десять-двадцать типов <Something>Content ?Пример в студию! VarcomresponseMessage - вообще ни о чем не говорит.А httpClient, объявленный где-то там выше тоже небось ни о чём не говорит? Следовательно где-то ниже по коду и responseMessage перестанет о чём-то говорить, как ты его не объяви :) А мне например очевидно, что httpClient - это HttpClient, а не MongoClient, или что-то ещё. А значит он возвращает HttpResponseMessage, а не что-то иное. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 14:13 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
skyANAVarcomпропущено... Серьезно? А если в коде десять-двадцать типов <Something>Content ?Пример в студию! VarcomresponseMessage - вообще ни о чем не говорит.А httpClient, объявленный где-то там выше тоже небось ни о чём не говорит? Следовательно где-то ниже по коду и responseMessage перестанет о чём-то говорить, как ты его не объяви :) А мне например очевидно, что httpClient - это HttpClient, а не MongoClient, или что-то ещё. А значит он возвращает HttpResponseMessage, а не что-то иное.+1 И тип responseMessage мне не интересен на данном этапе, потому что на данном этапе я не работаю с его содержимым. Скорее всего далее будет вызов: Код: c# 1.
А вот внутри этого метода уже будет видно тип параметра и понятно, что параметр содержит. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 14:22 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
skyANAVarcomпропущено... Серьезно? А если в коде десять-двадцать типов <Something>Content ?Пример в студию! А ты попробуй распарсить HTML DOM. Примеров будет более чем достаточно. skyANAVarcomresponseMessage - вообще ни о чем не говорит.А httpClient, объявленный где-то там выше тоже небось ни о чём не говорит? Говорит. Как правило, код просматривается сверху-вниз, а не наоборот. Есть элементарные правила хорошего тона при написании программных продуктов: - не писать простыней сплошного кода, по возможности, разбивать код на логические блоки. - не объявлять неявно переменные - комментировать сложные блоки кода Если придерживаться их, ваш код будет понятен как вам, так и всякому кто будет его просматривать, независимо от среды, в которой просматривается код. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 14:27 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
Varcom- комментировать сложные блоки кода.Код должен быть понятен без комментариев. Комментарии нужно применять только в крайнем случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 14:30 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
VarcomskyANAпропущено... Пример в студию! А ты попробуй распарсить HTML DOM. Примеров будет более чем достаточно.Читай о замене логики полиморфизмом. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 14:31 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
refreg И еще, попробуйте писать без переменных! Не считая, разумеется, переменных в циклических конструкциях, ибо там переменные являются частью этих конструкций. Ага. А вы попробуйте потом разобраться, что этот код без переменных делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 14:39 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
refregvar e2 = (Func<bool>)(() => false); Тут компилятор может вывести тип. А ты предлагаешь кроме var, еще и указывать тип. Кошмар! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 14:42 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
Алексей КVarcom- комментировать сложные блоки кода.Код должен быть понятен без комментариев. Комментарии нужно применять только в крайнем случае. Это комментарии можно не писать в крайнем случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 14:43 |
|
Неявное объявления переменных через var
|
|||
---|---|---|---|
#18+
Алексей КА может вывод типов в других местах, таких как generic-аргументы методов и типы лямбда-выражений, тоже не нужен? Вот только там он и нужен. Поддерживать залямбденный код - дебаггировать и из только из синтаксиса понять, почему не сработала бизнес логика - это для гениев. Так что я довольно часто расписываю лямбды на циклы опять - чтобы из массива найти проблемный элемент, и починить. Обратно потом не заворачиваю, бывает, что еще и лог добавляю об ошибке. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2015, 14:44 |
|
|
start [/forum/topic.php?fid=20&msg=39008763&tid=1401344]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 174ms |
0 / 0 |