![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Спасибо за рекомендации, осталось переслать их ребятам из MS - а то они сомневаются, MSDN предупреждения вписывают во всех статьях про var. Венгерская нотация вообще противопоказана в .net, это явно указано в .NET Framework Developer's Guide/General Naming Conventions. Рекомендую посидеть год-два на саппорте проекта средних размеров. Или порулить таким проектом хотя бы месяц, и послушать как разработчики отзываются о коде соседа. Твои требования к читабельности кода сразу повысятся на порядок. Добавлено @ 14:00 Имя переменной не должно включать в себя упоминание о типе. Поэтому var overuse приводит к незнанию разработчика и о типе и об интерфейсе до момента компиляции. В сказочном мире, где крупные проекты пишутся с использованием ФП одним человеком на коленке это еще приемлимо. В реальном, где всегда есть куча чужого кода, и 40-50% времени уходит на его отладку - нет. Это сообщение отредактировал(а) PashaPash - 12.9.2008, 14:01 |
|||
|
||||
| source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
Безусловно, var - это не панацея, и ничего революционного в нём нет, но штука удобная и для читаемости и для отладки, если использовать его с умом, как и любую абстракцию.
Это сообщение отредактировал(а) source777 - 12.9.2008, 15:26 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
| PashaPash |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Код в основном не пишут. Его читают. var повышает удобство написания кода, но кроме пары ситуаций понижает его читабельность. Не читабельность автором через 5 минут в студии. А читабельность тем, кто будет отлаживать крэш в нем через пару месяцев. Visual Studio и IntelliSense - это круто...во время написания кода. А во время отладки - будешь водить мышой над 5-6 чужими локальными переменными и смотреть на их тип? Качать фотографическую память? Или записывать типы на бумажку? Если для прочтения кода надо водить мышкой над каждой переменной - то код нечитабельный. Если ты без IntelliSense не можешь сказать что происходит в функции - то код нечитабельный. Судя по тому, что ты этого не понимаешь, ты никогда ничего серьезного писал.
Саппорт - это не только люди, которые отвечают на звонки. Это еще и разработчики, которые сидят и копают чужой код, написанный такими как ты. И руководители проектов, которые вынуждены думать о будущем багфиксе. Да, вас - студентов/джуниоров - садят сразу на новые проекты, которые отправляются на свалку сразу после релиза, и которые не надо поддерживать. В сказочном мире. В реальном студенты обычно попадают на готовый проект, и начинают отжигать в коде. А я, как лид, вынужден бить по рукам вот таких как ты. И копаться в чужом спагетти. Может быть ты мегазвезда программирования, и твой код безупречен? Никогда не открывал свои проекты после даты релиза? А может все-таки кодер, за которым проще переписать заново, чем исправить? |
||||
|
|||||
| nikitao |
|
||||||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 4 Всего: 26 |
Так. Стоп хардкор. Устаканились
Теперь по сабжу.
Повторю за PashaPash. Венгерка противопоказана в .NET. Вот статья все с того же хабра о хорошем стиле http://habrahabr.ru/blogs/net/26077/
Вот я тупой наверно. Я НЕ понимаю как это улучшает читабельность. Ну не понимаю я. обьясните.
ну анонимные типы к примеру. ЗЫ Кстати аргументы про IntelliSense вообще не принимаются. Речь идет не о IDE , доп инструментах или еще чему то. Речь идет о языке. Так можно далеко зайти. ЗЫЫ Кстати я тут студентом на днях стал Это сообщение отредактировал(а) nikitao - 13.9.2008, 00:47 -------------------- Жизнь - печальная штука. |
||||||
|
|||||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: нет Всего: 134 |
Сравни 2 строчки кода(название типа сперто с хабра)
во второй - ненужное дублирование типа. Который к тому же занимает много букв на экране. Много ненужных букв на экране = плохая читабельность. Это сообщение отредактировал(а) Mayk - 13.9.2008, 06:32 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 4 Всего: 26 |
ну....... ведь мы же комментарии в коде пишем. Они тож много букв занимают и в каком то смысле шумы создают.
Ну и насколько сильно без var шумы? Если код с тоступами , пропусками строк оформить , то помоему все читабельно и остается. -------------------- Жизнь - печальная штука. |
|||
|
||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: нет Всего: 134 |
ну так никто не заставляет писать "шумные" комментарии в стиле
но var'то тут причем? var убирает излишки по типу в примере выше. Зачем писать тип дважды? Что это даёт? Это сообщение отредактировал(а) Mayk - 13.9.2008, 10:16 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Никто не предлагает писать тип дважды - в случаях с new, кастом и выражениями linq var явно повышает читаемость. Просто новый решарпер настойчиво предлагает не писать тип вообще во всех случаях, когда его можно вывести. А так как решарпер очень популярен (имхо незаслуженно, но это оффтоп), то через некоторое время можно ожидать кучу кода в котором вообще типы переменных не упоминаются. |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
Я то это знаю, но вам двоим она "упростит" отладку(вы наконец сможете вместо семантически ясных идентификаторов, писать iMyVar и радоваться, что не надо пользоваться IntelliSense), так что смело юзайте... ты и nikitao предлагаете, вы ведь против этого ключевого слова, значит вам придётся писать тип дважды и не использовать Linq и анонимные классы. Но как я уже говорил такой бездумный пуризм сродни использованию венгерской нотации... Вместо этого я считаю, куда более разумным использовать вывод типов, естественно с умом, как и любое средство повышения уровня абстракции. А причём тут я? ты копаешься и копайся, надо было компанию лучше выбирать... Это сообщение отредактировал(а) source777 - 13.9.2008, 17:47 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Ну просвети меня, вдруг я что-то упустил. Ты можешь понять что делает чужой код, без знания о типах и интерфейсах переменных? Или ты даже свой код без IntelliSense прочесть не можешь? Ты ж считаешь что StreamWriter - это "неуправляемый тип", а финализатор - это блок finally. Уверен что сможешь научить меня отладке .net приложений? Ты что, принципиально не читаешь моих сообщений до конца? Не перевирай смысл, и не вырывай фразы из контекста. Я не предлагаю не использовать вар вообще, я предлагаю его использовать только в случаях, когда без него тип явно упоминается дважды или с LINQ. Это бездумный пуризм? Это как раз использование с умом, с заботой о том, кто будет код читать. И с четким критериями. А вот ты предлагаешь использовать его вообще везде где только можно, оговорка "с умом" вообще появилась только в последней мессаге. Да еще и считаешь что венгерка может упростить отладку. Семантически ясные идентификаторы не должны включать в себя имя типа, они должны говорить о назначении переменных. Если ты действительно считаешь что знать о типе переменной разработчику не нужно - то тебя ждут больше проблемы при работе в команде. Переходи на VB, там давно есть late bound. Это сообщение отредактировал(а) PashaPash - 13.9.2008, 18:23 |
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 4 Всего: 26 |
где я писал , что в Linq и анонимных нельзя использовать...вот ума не приложу Согласен, что ничего не дает. Просто мне то кажется , что не особо и мешает , если код - не помойка ( ну а если помойка , то тут ничо не поможет). Просто если типы простые типа string DateTime или int помоему разницы вообще нету. Ну а если там такие плохочитаемые как List<IMySuperPuperInterface> , так их обычно не так и много на "анализируемом" куске кода, так что тоже получается не мешает. Это сообщение отредактировал(а) nikitao - 14.9.2008, 00:39 -------------------- Жизнь - печальная штука. |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: нет Всего: 134 |
Они увеличивают длину строки, тем самым повышая шанс того что часть аргументов, передаваемых конструктору будет скрыта за экраном и придется скроллить текст во время чтения исходника или возиться с переносами аргументов на новые строки во время написания кода Перенос части аргументов,кстати, на новые строки в свою очередь уменьшает кол-во ....хммм... statement'ов, которые видятся за раз, что отвратительно сказывается на читабельности. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| MasterOfCode |
|
|||
|
elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: 4 Всего: 27 |
Переменную ты объявляешь только один раз, а потом ее используешь энное кол-во раз. И тогда
-------------------- ![]() |
|||
|
||||
| Veitmen |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 10.11.2006 Где: СПБ Репутация: 3 Всего: 4 |
Ну про венгерку PashaPash, сказал верно все.
Что касается var то порой использовать это удобно. Но только в том случае, когда явно видно какой тип все таки она будет принимать. В выше риведенном примере это явно демонстрируется. Но если что нибудь типа:
то никаких выгод я не вижу. Да, надо правильно называть методы. Это бесспорно. Но если я использую чужой код? Да и в конце концов, даже если я узаю свой код, человек который будет читать мой код может не сразу понять что это за тип, даже если я правильно назову свой метод. В конце концов, явное указание типа позволяет делать имена функций короче. Потому что явно видно что это за лист будет. Да, вы конечно можете сказать что можно сделать так:
Но это дополнительный код. Это минус. |
||||
|
|||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: нет Всего: 134 |
И что? Что из этого следует? Объясни как из кол-ва объявлений следует что var плох. Какое неудобство? Кто-то не может прочитать тип если он написан целый один раз а не всего лишь два? Предлагаю не останавливаться. И писать еще более удобный для отладки код:
And ze drims fainali keim tru! -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |