Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ключевое слово var 
:(
    Опции темы
nikitao
Дата 11.9.2008, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 4
Всего: 26



взволновала  smile  вот эта статейка на хабре 

http://habrahabr.ru/blogs/net/39231/

Интересно что у нас по этому поводу скажут smile 

ЗЫ
Там мне сказать не дают :'( ибо рег закрыт 


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
mr.Anderson
Дата 11.9.2008, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Интересная вещь, мне кажется, хотя, по моему мнению, снижает читабельность кода.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
QryStaL
Дата 11.9.2008, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Цитата(mr.Anderson @  11.9.2008,  21:24 Найти цитируемый пост)
снижает читабельность кода.

это мягко сказано.

Как по мне, аргументация автора статьи недостаточно убедительна. Кроме спорного пункта "использование var приводит к уменьшению «шума» в коде", все остальное - слишком субъективно. А решарпером я не пользуюсь =)


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
nikitao
Дата 12.9.2008, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 4
Всего: 26



Вобщем пока что я очень рад , что я не один думаю так как думаю smile  


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
PashaPash
Дата 12.9.2008, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



IMHO, var можно применять только тогда, когда тип переменной явно упоминается в той же строчке. В остальных случаях получится happy debugging для человека, который будет поддерживать код.


--------------------
PM MAIL WWW   Вверх
MasterOfCode
Дата 12.9.2008, 06:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Помимо читабельности, это вызовет массу ошибок, если ты первый раз после объявления присвоил переменной значение int, а потом значение string, то компилятор ругаться матом будет. Если уж на то пошло, давайте везде object использовать... ыыы))  smile 


--------------------
user posted image
PM ICQ   Вверх
HalkaR
Дата 12.9.2008, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 14
Всего: 42



Цитата(PashaPash @ 12.9.2008,  01:07)
IMHO, var можно применять только тогда, когда тип переменной явно упоминается в той же строчке. В остальных случаях получится happy debugging для человека, который будет поддерживать код.

var можно использовать только явно определяя тип (либо с анонимными типами, но это отдельная песня). Так что не волнуйся по другому просто не получится сделать.
PM MAIL   Вверх
MasterOfCode
Дата 12.9.2008, 10:57 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



интересно такой код скомпилится:

Код

var stringVar;
var intVar;
stringVar = "0";
intVar = 1;
stringVar = intVar;

скорее всего нет...


--------------------
user posted image
PM ICQ   Вверх
QryStaL
Дата 12.9.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Цитата(MasterOfCode @  12.9.2008,  10:57 Найти цитируемый пост)
интересно такой код скомпилится:

нет


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
PashaPash
Дата 12.9.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(HalkaR @  12.9.2008,  10:53 Найти цитируемый пост)
var можно использовать только явно определяя тип (либо с анонимными типами, но это отдельная песня). Так что не волнуйся по другому просто не получится сделать. 

Почувствуй разницу между "упомянуть" и "определить". Явно определить тип так, чтобы его видел компилятор, и явно упомянуть тип для человека на саппорте - разные вещи. Вот скажи, вот в этих строчках явно виден тип переменной? А ведь он там определен.
Код

var oldParent = currentElement.Parent;
var reader = dataStore.GetReader();

Кроме того, никто не застрахован от изменения стороннего API, и написание кода без явного упоминания типа переменной - самоубийство. Изменение double на int компилятор проглотит, но потом вылезут ошибки округления, при делении например. Вот хотя бы:
Код

var someNumber = 9;// 9.0, externalApiObject.GetSomeDurationInDays();
Console.WriteLine(someNumber / 2 * 2);

Понять всю опасность var просто - возьмите запущенный кусок кода из своего проекта, с 5-6 локальными переменными. поменяйте явное упоминание типов на var. Через две недели взгляните на него - если не возникнет сомнений относительно типов - то вы компилятор.

Это сообщение отредактировал(а) PashaPash - 12.9.2008, 11:47


--------------------
PM MAIL WWW   Вверх
Mayk
Дата 12.9.2008, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



имхо автоматический вывод рулил, рулит и будет рулить.  Не понимаю паники выше отписавшихся. Наверное ocaml и python уже съели мой моск. 



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
nikitao
Дата 12.9.2008, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 4
Всего: 26



Mayk,  видимо )))) меня  к примеру от слова var трясет )))))


Но вообще господа речь идет несколько о другом как я понял

речь идет не о повсеместном использовании var ,  а  об желательном использовании. Ну т е если это ведет к неопределенности как с int и double  то ясно что не надо юзать , а вопрос надо ли использовать в в таких случаях 

Код

SqlDataReader reader = new SqlDataReader();


или 

Код

var reader = new SqlDataReader();


лично я резко против )))


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
source777
Дата 12.9.2008, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 4
Всего: 56



Цитата(Mayk @  12.9.2008,  12:12 Найти цитируемый пост)
имхо автоматический вывод рулил, рулит и будет рулить.
+много, сделали бы его в C# ещё помощнее, по аналогии с функциональными языками, а то с var в текущем варианте далеко не уедешь.  Хотя, как средство для улучшения читабельности, безусловно стоит применять.

Всем, кому мерещится, что var снижает читабельность и усложняет отладку, рекомендую обратиться к венгерской нотации, уверен, что она вам понравится...  smile 


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
MasterOfCode
Дата 12.9.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Напишите хоть одну задачу где без ключевого слова var, не обойтись? Хочется узнать. smile


--------------------
user posted image
PM ICQ   Вверх
source777
Дата 12.9.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 4
Всего: 56



Цитата(MasterOfCode @  12.9.2008,  13:21 Найти цитируемый пост)
Напишите хоть одну задачу где без ключевого слова var, не обойтись? Хочется узнать. smile 

MasterOfCode, ты о чём? В CLR нет никаких изменений со времен .NET 2.0, все возможности C# 3.5 - это синтаксический сахар, поэтому твой вопрос лишён смысла. Рекомендую тебе почитать статью - http://rsdn.ru/article/philosophy/SyntacticSugar.xml
Более того, открою тебе страшную тайну, нет ни одной задачи, которую бы нельзя было решить на ассемблере, но можно на C#, тут вопрос времени и удобства, а не теоретической возможности.

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


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1247 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.