|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
beg-in-erVS2008 вообще не умеет править такой метод Честно говоря никогда не правлю таким образом код. Использую средства Quick Watch, Watch и новомодный Autos. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 15:31 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
D129Не соглашусь. Писать может и удобно, но вот поддерживать - надо прочитать портянку кода, а там варварвар = гет(). А что делает, какой класс возвращает - надо в функцию прокрутить, или мышкой наводится, вроде показывает подсказку, а вот если сразу два класса надо глянуть - это что и это - лишние напряги, просто падает производительность, да и все. Тратишь энергию не на то, что надо - в своей памяти меняешь вар на конкретное и актуальное сейчас имя класса. А зачем? Только типа для того, что "если вдруг когда нибудь кто нибудь зачем нибудь" поменяет тип, то ему, счастливому, не придется пару строчек поменять, которые ему компилятор подчеркнет. Великая выгода от этого? Даже по деньгам нет, потому, что я сейчас втыкаю и теряю времени в сотни раз больше, чем могло бы понадобиться для подобного изменения. не соглашусь. не надо ничего там крутить. если вам нужна информация о типе, вам всё равно придётся лезть в дебри. в ином случае достаточно семантики в названиях переменных и функций. var user = SomeService.GetActiveUser(); чем же вот это лучше: IUser user = ... ? кроме того, особенно доставляют вот таки конструкции: Код: c# 1.
офигитительная читабельность!!!!!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 15:32 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
НахлобучНе в числе символов дело. Сама конструкция глупая: говорим компилятору "выведи-ка мне тип", и тут же сами его (тип) и указываем. ну так в этом и смысл, фокус внимания правильный. важно то, что справа, а не то, что слева. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 15:34 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
D129user7320что мне говорили, что за лямбды Ну вот у меня IQ 120, я понимаю абстракции ну максимум до 3 этажа. Дальше все, моск закипает. Так что вывод ясен. Есть перегибы и в другую сторону - когда требуют чтобы все переменные обьявлялись как var. Но это еще не самое страшное (через что мне приходится проходить прямо сейчас). :-) У меня айку что-то около 80. Я вообще мало что понимаю. Да при этом ещё и постоянно что-нибудь забываю. Но к некоторым длинным своим лямбдам я пишу пояснение в комментарии, что эта лямбда делает, чтобы если кто-то даже в лямбде не разобрался, то хотя бы смог переписать решение этой задачи так, как ему удобнее - без лямбд, например. А насчёт var - это банально короче, чем выводить полностью ReadOnlyCollection<MySuperModel>. И не надо задумываться, что это за тип при написании, например, всяких форичей: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 15:38 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
hVostt если вам нужна информация о типе для начала я предпочел бы видеть (еще до всяких дебрей) что это не string, например. И не всегда семантика имени отражает сущность, и дополнение в виде явного имени а даже и интерфейса - совсем не лишнее для меня. Сугубо субьективно - я работал с кодом где этого требования не было - и var применялось там, где действительно длинное имя класса мешает, или при разработке лямбды, которая может возвращать разные типы, и вот работаю с чужим кодом сейчас - и чуствую неудобство. Вообще, бывают ситуации, когда и оператор goto улучшает читаемость, каждый инструмент хорош на своем месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 15:41 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
D129Вообще, бывают ситуации, когда и оператор goto улучшает читаемость, каждый инструмент хорош на своем месте.Если в языке нет исключений. В C# они есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 15:46 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
Алексей КМСУпропущено... Честно говоря меня вполне устраивает "скорость" .NET, разницу в процессорных тиках считать будем? Чай не драйвера под материнку пишем на плюсах.Меня не устраивает. Криворуконаписанный WPF мог бы работать в 1.5 ... 3 раза быстрее, если бы была возможность опционально отключать проверку границ массивов / типов. Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
А разве главная проблема производительности WPF не в графической части ? На этом ещё Джобс выехал, когда Вин Мобайл была хороша всем (для своего времени и своих процессоров), кроме отзывчивости интерфейса, а первый Айфон плох всем, кроме отзывчивости интерфейса (ещё мультитач они первые, вроде, ввели, и ещё пару мелочей), но именно это и было одной из главных фич, из-за которых стали поливать Вин Мобайл говном и дрочить на айфоны. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 15:48 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
user7320 А разве главная проблема производительности WPF не в графической части ? На этом ещё Джобс выехал, когда Вин Мобайл была хороша всем (для своего времени и своих процессоров), кроме отзывчивости интерфейса, а первый Айфон плох всем, кроме отзывчивости интерфейса (ещё мультитач они первые, вроде, ввели, и ещё пару мелочей), но именно это и было одной из главных фич, из-за которых стали поливать Вин Мобайл говном и дрочить на айфоны.Я с графикой особо не работал. Меня расстраивает, например, долгая генерация визуального дерева. Это особенно заметно в DataGrid с большим количеством отображаемых ячеек. Может в 4.5 это оптимизировали, в 4.0 оно работает непростительно медленно. зы: Grid.SharedSizeScope тоже не быстр. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 15:53 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
Алексей Кuser7320 А разве главная проблема производительности WPF не в графической части ? На этом ещё Джобс выехал, когда Вин Мобайл была хороша всем (для своего времени и своих процессоров), кроме отзывчивости интерфейса, а первый Айфон плох всем, кроме отзывчивости интерфейса (ещё мультитач они первые, вроде, ввели, и ещё пару мелочей), но именно это и было одной из главных фич, из-за которых стали поливать Вин Мобайл говном и дрочить на айфоны.Я с графикой особо не работал. Меня расстраивает, например, долгая генерация визуального дерева. Это особенно заметно в DataGrid с большим количеством отображаемых ячеек. Может в 4.5 это оптимизировали, в 4.0 оно работает непростительно медленно. зы: Grid.SharedSizeScope тоже не быстр. Вы почитайте статью. Если вы пользователю хотя бы одну кнопку показали - вы работали с графикой WPF. Это ведь не только к рисования фигур или 3D относится. WPF всё (все контролы, фигуры и прочее) отрисовывает треугольниками. И вот эти алгоритмы отрисовки у него выглядят так... как будто там сидел какой-то вредитель и специально всё притормаживал. Как разработчики игр для ПК делают, когда графон уровня "до Кризиса" жрёт больше Кризиса и тормозит тоже больше. Это, кстати, вполне может быть связано с заговором МС с производителями железа. Ведь ВПФ вышел, когда вышла Виста. А она тормозами отличалась. Тогда ещё они этот свой ДХ10 толкали везде, опять же, новое железо под него. То на то, то и выходит, что с тех пор никто отрисовку в ВПФ и не поправлял (наверное), хотя уже давно эти тормоза не актуальны - т. е. железо напродавали и бабки поделили. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:08 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
user7320Алексей Кпропущено... Я с графикой особо не работал. Меня расстраивает, например, долгая генерация визуального дерева. Это особенно заметно в DataGrid с большим количеством отображаемых ячеек. Может в 4.5 это оптимизировали, в 4.0 оно работает непростительно медленно. зы: Grid.SharedSizeScope тоже не быстр. Вы почитайте статью. Если вы пользователю хотя бы одну кнопку показали - вы работали с графикой WPF. Это ведь не только к рисования фигур или 3D относится. WPF всё (все контролы, фигуры и прочее) отрисовывает треугольниками. И вот эти алгоритмы отрисовки у него выглядят так... как будто там сидел какой-то вредитель и специально всё притормаживал. Как разработчики игр для ПК делают, когда графон уровня "до Кризиса" жрёт больше Кризиса и тормозит тоже больше. Это, кстати, вполне может быть связано с заговором МС с производителями железа. Ведь ВПФ вышел, когда вышла Виста. А она тормозами отличалась. Тогда ещё они этот свой ДХ10 толкали везде, опять же, новое железо под него. То на то, то и выходит, что с тех пор никто отрисовку в ВПФ и не поправлял (наверное), хотя уже давно эти тормоза не актуальны - т. е. железо напродавали и бабки поделили. Ещё косвенно о том, что ВПФ МС забросила и не развивает года так три-четыре. Попробуйте в ВПФ 3Д натянуть на какую-нибудь простую поверхность текстурку. Я на сферу натягивал панорамную фотку разрешением где-то 800х600, а получил квадраты. И у меня родилось такое предположение, что ВПФ не может скормить ДХ'у текстуры бОльшего разрешения, чем, скажем, 256х256. Но это разрешение - это, скажем так, технологии как раз бородатых годов начала 2000-х. Недаром в ВПФ 3Д рендеринг аналогичен обрезанному ДХ9. Ну, а с 2Д ситуация та же, что и с 3Д. Вот вам и проблемы визуальных деревьев и томроза. МС ВПФ не нужен. А разработчикам и пользователям не нужен недоделанный ModernUI. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:14 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
user7320Алексей Кпропущено... Я с графикой особо не работал. Меня расстраивает, например, долгая генерация визуального дерева. Это особенно заметно в DataGrid с большим количеством отображаемых ячеек. Может в 4.5 это оптимизировали, в 4.0 оно работает непростительно медленно. зы: Grid.SharedSizeScope тоже не быстр. Вы почитайте статью. Если вы пользователю хотя бы одну кнопку показали - вы работали с графикой WPF. Это ведь не только к рисования фигур или 3D относится. WPF всё (все контролы, фигуры и прочее) отрисовывает треугольниками. И вот эти алгоритмы отрисовки у него выглядят так... как будто там сидел какой-то вредитель и специально всё притормаживал. Как разработчики игр для ПК делают, когда графон уровня "до Кризиса" жрёт больше Кризиса и тормозит тоже больше. Это, кстати, вполне может быть связано с заговором МС с производителями железа. Ведь ВПФ вышел, когда вышла Виста. А она тормозами отличалась. Тогда ещё они этот свой ДХ10 толкали везде, опять же, новое железо под него. То на то, то и выходит, что с тех пор никто отрисовку в ВПФ и не поправлял (наверное), хотя уже давно эти тормоза не актуальны - т. е. железо напродавали и бабки поделили.После генерации визуального дерева отрисовки происходят достаточно быстро. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:15 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
user7320МСУпропущено... В LINQ не ставилось задачи работать быстрее нативного кода, это обвес. Во всём Дотнете и вообще в Сишарпе такой задачи не ставилось. Ставилась задача управляемости кодом и скорости разработки. Но приходят бородачи и начинают ныть "в наши дни Си был без плюсов и уж тем более без всяких там решёток...". hVosttда ничего плохого. очень часто увесистые вложенные циклы можно переписать одним LINQ-выражением. только надо знать меру, чтобы читабельность не потерялась. иначе к исходникам надо будет прикладывать бесплатные пол литра, иначе не разобраться Так в том-то и штука, что мне говорили, что за лямбды и Линк будут бить. А что конкретно им не нравилось - не говорили. Были мои лямбды говнокодом или они в них даже не вникали... Создаётся впечатление, что как увидели лямбду, так не разбираясь сразу глаза красные и дым из носа.Ну давай посмотрим на твой код:user7320Я уже и сам не помню, что эта штука делает - попробуйте понять из кода. Завтра вспомню - скажу. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
2. У тебя в одном выражении и выбор из бд, и mapping (нарушение принципа единственной обязанности). Да и RecommendationForModel - это ViewModel у тебя, насколько я помню. И если клиенту потребуется JSON, или XML, или другой формат ViewModel, то что ты будешь делать, копипастить и править своё выражение? 3. FirstOrDefault() может вернуть null и упадёт исключение из которого ни фига не понятно, в каких данных проблема. Остальные замечания будт после того, как ты вспомнишь, что делает твой код ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:17 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
Алексей КПосле генерации визуального дерева отрисовки происходят достаточно быстро. Хмм... наверное, я что-то подзабыл. Или не знал. Дадите ссылку, где расписано, в каком порядке и как ВПФ создаёт картинку UI? От разметки замла до готового окна. Вопрос по-быстрому: в создании визуального дерева ГПУ не участвует? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:19 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
user7320Попробуйте в ВПФ 3Д натянуть на какую-нибудь простую поверхность текстурку. Я на сферу натягивал панорамную фотку разрешением где-то 800х600, а получил квадраты. И у меня родилось такое предположение, что ВПФ не может скормить ДХ'у текстуры бОльшего разрешения, чем, скажем, 256х256. Но это разрешение - это, скажем так, технологии как раз бородатых годов начала 2000-х. Недаром в ВПФ 3Д рендеринг аналогичен обрезанному ДХ9. Ну, а с 2Д ситуация та же, что и с 3Д. Вот вам и проблемы визуальных деревьев и томроза.Повторюсь, с графикой не работаю. А бордюры и градиенты он рисует достаточно быстро. Тормоза именно в модели данных контролов. user7320МС ВПФ не нужен. А разработчикам и пользователям не нужен недоделанный ModernUI.Нужен. У ВПФ свои преимущества. Альтернативы ему нет и в ближайшее время не предвидится. FireMonkey и Qt не предлагать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:21 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
Алексей К Альтернативы ему нет и в ближайшее время не предвидится. а как же триада html5+css5+js ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:24 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
для особых ценителей есть canvas и WebGL ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:25 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
hVosttvar user = SomeService.GetActiveUser(); чем же вот это лучше: IUser user = ... ? существенно лучше. GetActiveUser() может вернуть всё что угодно(реализовывать тучу интерфейсов, иметь собственные и унаследованые методы, свойства, поля) IUser user означает что ничего кроме интерфейса IUser от user не требуется ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:29 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
user7320Вопрос по-быстрому: в создании визуального дерева ГПУ не участвует?Да. user7320Алексей КПосле генерации визуального дерева отрисовки происходят достаточно быстро. Хмм... наверное, я что-то подзабыл. Или не знал. Дадите ссылку, где расписано, в каком порядке и как ВПФ создаёт картинку UI? От разметки замла до готового окна. Ссылку не дам, не помню где это описано. Кратко: 1. Парсинг XAML (BAML) 2. Вычисление значений DependencyProperty, DataBinding, Styles, Triggers и т. п. Разворот DataTemplate. 3. Разворот ControlTemplate и генерация Visual Tree. 4. Отрисовка (ГПУ участвует). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:30 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
ИзопропилIUser user означает что ничего кроме интерфейса IUser от user не требуется отлично сказано! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:31 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
beg-in-erАлексей К Альтернативы ему нет и в ближайшее время не предвидится. а как же триада html5+css5+jsЭто с другой планеты. Если оно приживётся а WPF совсем загнётся - будем осваивать. Пока ещё рано. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:32 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
Изопропилсущественно лучше. GetActiveUser() может вернуть всё что угодно(реализовывать тучу интерфейсов, иметь собственные и унаследованые методы, свойства, поля) IUser user означает что ничего кроме интерфейса IUser от user не требуется вот именно. GetActiveUser() может вернуть всё что угодно. когда займётесь рефакторингом, проклянете все явные определения типов вместо var. если судить по опыту, не было ни одного случая, когда var меня поставил в тупик. названия классов, методов, свойств и переменных должны очень чётко отражать смысл. GetActiveUser() не должен возвращать имя пользователя. GetActiveUserName() не должен возвращать объект пользователя. очевидное поведение и семантическое наименование позволяет не пользоваться костылём в виде явного определения типа для переменной. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:34 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
Алексей К Пока ещё рано. про рано ещё не знаю, но тема классная. много она конечно что не может ( например контрол произвольной формы сделать в духе Region ) ....но я вот не понимаю зачем нужен wpf после появления html5 (а точнее его поддержи броузерами). тут тебе и на яблоко и на андроид и на винду и на юникс - всё сразу и в одном флаконе. ненужно говнокодить на разные платформы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:36 |
|
Задачка на профпригодность
|
|||
---|---|---|---|
#18+
beg-in-erАлексей К Пока ещё рано. про рано ещё не знаю, но тема классная. много она конечно что не может ( например контрол произвольной формы сделать в духе Region ) ....но я вот не понимаю зачем нужен wpf после появления html5 (а точнее его поддержи броузерами). тут тебе и на яблоко и на андроид и на винду и на юникс - всё сразу и в одном флаконе. ненужно говнокодить на разные платформыВидимо дело привычки. Меня WPF устраивает. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 16:39 |
|
|
start [/forum/topic.php?fid=20&msg=38489153&tid=1401776]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 366ms |
total: | 515ms |
0 / 0 |