Re[3]: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 30.11.11 13:15
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ixor, Вы писали:


I>>TextFormatter.ParseUrl — протектед.


I>>Вопрос к AVK: Нормально ли использование TextFormatter в коде повсеместно?


AVK>ХЗ. Но, наверное, можно.


I>> Если нормально, то надо его праваить. У меня прав доступа к его репозитарию нет.


AVK>У TextFormatter есть наследник в янусе, JanusFormatMessage. Можно вытащить в нем как публичный метод. Заодно, по возможности, убрав Match из публичного интерфейса.


Собственно вопрос и родился из-за наследника JanusFormatMessage.
В простейшем случае(без скрытия Match) там получается очень уродская перегрузка с вызовом родителя и такое в репо я закидывать не стал (оставил как рабочий вариант).
Посмотрю как будет со скрытием Match.

I>>Вопрос к AlexNek: похоже исправления в этом методе не имеют никакого отношения к форматтерам и это просто попутный рефакторинг?


AVK>На рефакторинг непохоже, логика меняется. Раньше этот метод при отсутствии юзера выкидывал исключение.

AVK>Только написан он на редкость криво. Count приводит к отдельному запросу в БД. Всего то нужно сделать как то так:
AVK>
AVK>return
AVK>  db
AVK>    .Users(u => u.ID == userID)
AVK>    .Select(
AVK>      u =>
AVK>        FormatAuthor(
AVK>          u.ID,
AVK>          u.UserClass,
AVK>          u.DisplayName(),
AVK>          false))
AVK>    .SingleOrDefault()
AVK>    ?? "Nothing";
AVK>


Собственно так и было. Может Алекс вспомнит, что он хотел сделать.
... << RSDN@Home 1.2.0 alpha 5 rev. 1536>>
Re[4]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.11.11 13:27
Оценка:
Здравствуйте, ixor, Вы писали:

AVK>>
AVK>>return
AVK>>  db
AVK>>    .Users(u => u.ID == userID)
AVK>>    .Select(
AVK>>      u =>
AVK>>        FormatAuthor(
AVK>>          u.ID,
AVK>>          u.UserClass,
AVK>>          u.DisplayName(),
AVK>>          false))
AVK>>    .SingleOrDefault()
AVK>>    ?? "Nothing";
AVK>>


I>Собственно так и было. Может Алекс вспомнит, что он хотел сделать.


Так точно не было, был просто Single, который выкидывает исключение. Алекс, видимо, боролся с исключениями — и где то (скорее всего в каком то из отчетов) вылетало исключение при неполной базе юзеров. Либо сам где то запользовал, где пользователя может не быть. "Nothing", кстати, тоже не самая удачная идея — лучше все таки null возвращать, а ?? добавлять снаружи, если где требуется.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[5]: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 30.11.11 14:42
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ixor, Вы писали:


AVK>>>
AVK>>>return
AVK>>>  db
AVK>>>    .Users(u => u.ID == userID)
AVK>>>    .Select(
AVK>>>      u =>
AVK>>>        FormatAuthor(
AVK>>>          u.ID,
AVK>>>          u.UserClass,
AVK>>>          u.DisplayName(),
AVK>>>          false))
AVK>>>    .SingleOrDefault()
AVK>>>    ?? "Nothing";
AVK>>>


I>>Собственно так и было. Может Алекс вспомнит, что он хотел сделать.


AVK>Так точно не было, был просто Single, который выкидывает исключение. Алекс, видимо, боролся с исключениями — и где то (скорее всего в каком то из отчетов) вылетало исключение при неполной базе юзеров. Либо сам где то запользовал, где пользователя может не быть. "Nothing", кстати, тоже не самая удачная идея — лучше все таки null возвращать, а ?? добавлять снаружи, если где требуется.


Я вставил "как велено" — собиру-покатаюсь-посмотрю как работает. Не зная подводных камней держусь подальше от запросов к БД, даже решарперу не доверяю что-то там менять. Тестов нету. Мало ли что там может быть.
... << RSDN@Home 1.2.0 alpha 5 rev. 1536>>
Re[2]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 30.11.11 17:43
Оценка:
Здравствуйте, ixor, Вы писали:

I>Здравствуйте, AlexNek, Вы писали:


I>Собственно вот такой патч у меня получился по твоим исходникам.

I>Он не компиляется из за вот этой строки:


I>
I>UrlHelper.cs

I>        public static bool IsSchemePresent(string url)
I>        {
I>            Match match = TextFormatter.ParseUrl(url);
I>            return IsSchemePresent(match);
I>        }
I>



I>TextFormatter.ParseUrl — протектед.

Да, это было первое исправление в еще в мае и причина, по которой я стащил исходники проекта, после этого было еще 6 исправлений для TextFormatter
Но, когда делал патч уже успел забыть об этом

I>Вопрос к AlexNek: похоже исправления в этом методе не имеют никакого отношения к форматтерам и это просто попутный рефакторинг?

I>
I>         private string GetUserDisplayName(IDataContext db, int userID)
I>         {
I>-            return
I>-                db
I>-                    .Users(u => u.ID == userID)
I>+            IQueryable<IUser> users = db.Users(u => u.ID == userID);
I>+            int count = users.Count();
I>+            if (count > 0)
I>+            {
I>+                IQueryable<string> queryable = users
I>                     .Select(
I>                         u =>
I>                             FormatAuthor(
I>                                 u.ID,
I>                                 u.UserClass,
I>                                 u.DisplayName(),
I>-                                false))
I>-                    .Single();
I>+                            false));
I>+                return queryable.Single();
I>+            }
I>+            return "Nothing";
I>         }
I>


Это уже попало в новый репозиторий в этом виде, никакой дополнительный инфы с марта не сохранилось, видимо был тяжелый вылет сразу. Но похоже уже разобрались.
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[5]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 30.11.11 17:43
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ixor, Вы писали:


AVK>>>
AVK>>>return
AVK>>>  db
AVK>>>    .Users(u => u.ID == userID)
AVK>>>    .Select(
AVK>>>      u =>
AVK>>>        FormatAuthor(
AVK>>>          u.ID,
AVK>>>          u.UserClass,
AVK>>>          u.DisplayName(),
AVK>>>          false))
AVK>>>    .SingleOrDefault()
AVK>>>    ?? "Nothing";
AVK>>>

Хоть так и на какие то миллисекунды оптимальней, подобная запись мне довольно непривычна. Ну и три уровня вложенности с точки зрения отладки тоже не очень нравится.

I>>Собственно так и было. Может Алекс вспомнит, что он хотел сделать.

Нее, у меня дефрагментация памяти включена на автомат для подобных случаев.
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[6]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.11.11 17:46
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Хоть так и на какие то миллисекунды оптимальней


Я бы сказал на сотни миллисекунд.

AN>подобная запись мне довольно непривычна


Что именно тебе непривычно? Запрос и в твоем варианте практически такой же. Или тебе оператор "??" незнаком?

AN>. Ну и три уровня вложенности с точки зрения отладки тоже не очень нравится.


Нет там никаких уровней вложенности.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[7]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 30.11.11 18:23
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AN>>Хоть так и на какие то миллисекунды оптимальней


AVK>Я бы сказал на сотни миллисекунд.

А насколько часто происходит данный запрос?

AN>>подобная запись мне довольно непривычна


AVK>Что именно тебе непривычно? Запрос и в твоем варианте практически такой же. Или тебе оператор "??" незнаком?

Да все. У нас только 2.0 и ни капли больше. Все остальное скажем, примерно известно, но нужно задумываться...

AN>>. Ну и три уровня вложенности с точки зрения отладки тоже не очень нравится.


AVK>Нет там никаких уровней вложенности.

Как тогда называть подобную конструкцию?
Db
 .X
 .Y
 .Z

Db.X.Y.Z
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[8]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.11.11 18:50
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>>Я бы сказал на сотни миллисекунд.

AN>А насколько часто происходит данный запрос?

Понятия не имею, смотреть надо. Но твой вариант еще и хуже читается, так что никакого смысла в двойном запросе нету.

AVK>>Что именно тебе непривычно? Запрос и в твоем варианте практически такой же. Или тебе оператор "??" незнаком?

AN>Да все. У нас только 2.0 и ни капли больше.

Оператор ?? доступен начиная с 2.0. Опять же повод ознакомится с возможностями хотя бы 3 шарпа, 5 лет уж прошло как никак, пора.

AVK>>Нет там никаких уровней вложенности.

AN>Как тогда называть подобную конструкцию?

Эта конструкция просто конструирует expression tree запроса. Само дерево конечно иерархично, но не вижу никакой в этом проблемы.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[9]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 30.11.11 21:25
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AVK>>>Я бы сказал на сотни миллисекунд.

AN>>А насколько часто происходит данный запрос?

AVK>Понятия не имею, смотреть надо. Но твой вариант еще и хуже читается, так что никакого смысла в двойном запросе нету.

Я не имею намерения сравнивать варианты на предмет лучше/хуже. Просто интересно.
А при чем двойной запрос и хуже читается?
Да и откуда знать что будет запрос? По крайней мере сразу видно, что если количество пользователей равно нулю, то ничего не делать.

AVK>>>Что именно тебе непривычно? Запрос и в твоем варианте практически такой же. Или тебе оператор "??" незнаком?

AN>>Да все. У нас только 2.0 и ни капли больше.

AVK>Оператор ?? доступен начиная с 2.0. Опять же повод ознакомится с возможностями хотя бы 3 шарпа, 5 лет уж прошло как никак, пора.

Не знаю почему, но у нас он запрещен.
Ознакомится и повседневно использовать — разные вещи.
Давай ты с Руби ознакомишься, а потом с одного взгляда скажешь скажешь, что делает файлик?
Я как то на одну строку из старого проекта смотрел, смотрел — вообще непонятно что делает. Пришлось по частям разбирать и искать, и по новому перечитывать.

AVK>>>Нет там никаких уровней вложенности.

AN>>Как тогда называть подобную конструкцию?

AVK>Эта конструкция просто конструирует expression tree запроса. Само дерево конечно иерархично, но не вижу никакой в этом проблемы.

Ну если у тебя сразу перед глазами появляется дерево то это здорово.
Я привык знать тип каждой переменной и иметь возможность глянуть списочек в отладчике 2008
Вот что ты будешь делать с отладкой следующей записи и о чем она тебе говорит?
return A().B().C().D();

А этот вариант? Даже с "дурными" именами можно примерно догадаться что происходит и проверить каждый результат.
List<Abc> x1 = A();
Abc x2 = x1.B();
MyString x3 = x2.C();
int x4 = x3.D();
return x4;
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[10]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.12.11 17:29
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>А при чем двойной запрос и хуже читается?


Вопрос непонятен.

AN>Да и откуда знать что будет запрос?


Count и Single ленивость сворачивают.

AN> По крайней мере сразу видно, что если количество пользователей равно нулю, то ничего не делать.


А если не равно?

AVK>>Оператор ?? доступен начиная с 2.0. Опять же повод ознакомится с возможностями хотя бы 3 шарпа, 5 лет уж прошло как никак, пора.

AN>Не знаю почему, но у нас он запрещен.

И что? Так и будешь всю жизнь в болоте сидеть? У нас тоже одно время был "запрещен". Правда, я в курсе был почему. Теперь разрешен, теперь я все больше на 4 поглядываю, хотя мне скорее не язык, а фреймворк и студия новые нужны.

AN>Ознакомится и повседневно использовать — разные вещи.


Ты планируешь всю жизнь на одном месте работать?

AN>Давай ты с Руби ознакомишься, а потом с одного взгляда скажешь скажешь, что делает файлик?


Понадобится — ознакомлюсь. Полгода назад питон вот понадобился — ничего, справился без особых проблем.

AVK>>Эта конструкция просто конструирует expression tree запроса. Само дерево конечно иерархично, но не вижу никакой в этом проблемы.

AN>Ну если у тебя сразу перед глазами появляется дерево то это здорово.

Оно не нужно перед глазами.

AN>Я привык знать тип каждой переменной


От дурных привычек нужно отучаться.

AN> и иметь возможность глянуть списочек в отладчике 2008


Список чего?

AN>Вот что ты будешь делать с отладкой следующей записи и о чем она тебе говорит?

AN>
AN>return A().B().C().D();
AN>


Да все как обычно. Что именно тебя смущает? И зачем вообще тебе часто отлаживать формирование дерева запроса?

AN>А этот вариант? Даже с "дурными" именами можно примерно догадаться что происходит и проверить каждый результат.

AN>
AN>List<Abc> x1 = A();
AN>Abc x2 = x1.B();
AN>MyString x3 = x2.C();
AN>int x4 = x3.D();
AN>return x4;
AN>


Ну и? Намного сложнее такая каша читается. Ты из-за гипотетической отладки исходники ненужным шумом засоряешь? Тогда срочно отучайся от таких привычек. Если тебя, конечно, профессиональный рост интересует.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[11]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 01.12.11 18:46
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AN>>А при чем двойной запрос и хуже читается?


AVK>Вопрос непонятен.

Но твой вариант еще и хуже читается, так что никакого смысла в двойном запросе нету.

Этоя твой ответ не понял

AN>>Да и откуда знать что будет запрос?


AVK>Count и Single ленивость сворачивают.

Ну вот и новое узнал

AN>> По крайней мере сразу видно, что если количество пользователей равно нулю, то ничего не делать.


AVK>А если не равно?

Тогда будет "какая то фигня" выполнятся.

AVK>>>Оператор ?? доступен начиная с 2.0. Опять же повод ознакомится с возможностями хотя бы 3 шарпа, 5 лет уж прошло как никак, пора.

AN>>Не знаю почему, но у нас он запрещен.

AVK>И что? Так и будешь всю жизнь в болоте сидеть? У нас тоже одно время был "запрещен". Правда, я в курсе был почему.

Я только делаю догадки, что его не поддерживает наша система CI.
AVK>Теперь разрешен, теперь я все больше на 4 поглядываю, хотя мне скорее не язык, а фреймворк и студия новые нужны.

AN>>Ознакомится и повседневно использовать — разные вещи.


AVK>Ты планируешь всю жизнь на одном месте работать?

Я и так сейчас по проектам работаю. Сделал и "свободен". Сейчас просто "большой" попался. Хотя и не люблю без особой нужды нормальное место менять.
Кстати, самая фиговая и неинтересная работа была в одной большой и довольно известной фирме.

AN>>Давай ты с Руби ознакомишься, а потом с одного взгляда скажешь скажешь, что делает файлик?


AVK>Понадобится — ознакомлюсь. Полгода назад питон вот понадобился — ничего, справился без особых проблем.

Дело не в том, что справишься или нет, а в отличии постоянного использования и знания.
Я с питоном тоже справился когда надо было, но если сейчас что спросишь посложнее, наверняка не отвечу.

AVK>>>Эта конструкция просто конструирует expression tree запроса. Само дерево конечно иерархично, но не вижу никакой в этом проблемы.

AN>>Ну если у тебя сразу перед глазами появляется дерево то это здорово.

AVK>Оно не нужно перед глазами.

Кому как.

AN>>Я привык знать тип каждой переменной


AVK>От дурных привычек нужно отучаться.

Отчего считаешь дурной привычкой?

AN>> и иметь возможность глянуть списочек в отладчике 2008


AVK>Список чего?

список элементов.

AN>>Вот что ты будешь делать с отладкой следующей записи и о чем она тебе говорит?

AN>>
AN>>return A().B().C().D();
AN>>


AVK>Да все как обычно. Что именно тебя смущает? И зачем вообще тебе часто отлаживать формирование дерева запроса?

Это не обязательно дерево запроса — это принцип. Вот если это будет возврат для Funct1 и она используется так
g(Funct1)

и насколько будет удобно глянуть что то же возвратила функция?
AN>>А этот вариант? Даже с "дурными" именами можно примерно догадаться что происходит и проверить каждый результат.
AN>>
AN>>List<Abc> x1 = A();
AN>>Abc x2 = x1.B();
AN>>MyString x3 = x2.C();
AN>>int x4 = x3.D();
AN>>return x4;
AN>>


AVK>Ну и? Намного сложнее такая каша читается.

Но по крайней мере понятно, что делается без всяких знаний об остальном. Что бы получить такую же информацию от одной строки нужно хорошо пошерстить исходникии побегать туда-сюда.
При этом я не утвержаю что такая запись всегда полезна.
AVK>Ты из-за гипотетической отладки исходники ненужным шумом засоряешь?
Это не только отладка но и понимание. Вполне возможно, что если в проекте будет достаточное количество подобных конструкций и они будет восприниматься "на автомате", то это и будет шумом иначе это подспорье для другого.
AVK>Тогда срочно отучайся от таких привычек. Если тебя, конечно, профессиональный рост интересует.
Честно говоря не вижу связи, а без учебы и так неинтересно.
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[12]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.12.11 19:45
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>>>А при чем двойной запрос и хуже читается?

AVK>>Вопрос непонятен.
AN>
AN>Но твой вариант еще и хуже читается, так что никакого смысла в двойном запросе нету.
AN>

AN>Этоя твой ответ не понял

В твоем варианте кода сильно больше, и он не полностью декларативный. Как следствие — читаемость его хуже.

AVK>>Count и Single ленивость сворачивают.

AN>Ну вот и новое узнал

Только заучивать это не надо. Достаточно понять, что переход от перечисления к скалярной величине в принципе не может не сворачивать ленивость.

AVK>>Ты планируешь всю жизнь на одном месте работать?

AN>Я и так сейчас по проектам работаю. Сделал и "свободен". Сейчас просто "большой" попался. Хотя и не люблю без особой нужды нормальное место менять.

Ну значит все может измениться.

AN>>>Я привык знать тип каждой переменной

AVK>>От дурных привычек нужно отучаться.
AN>Отчего считаешь дурной привычкой?

Отвлекает мозги ненужными подробностями и стимулирует нормальные имена переменным давать.

AVK>>Список чего?

AN>список элементов.

Все равно непонятно.

AVK>>Да все как обычно. Что именно тебя смущает? И зачем вообще тебе часто отлаживать формирование дерева запроса?

AN>Это не обязательно дерево запроса — это принцип.

В задницу все принципы, мешающие писать хорошо читаемый и лаконичный код.

AN> Вот если это будет возврат для Funct1 и она используется так

AN>
AN>g(Funct1)
AN>

AN>и насколько будет удобно глянуть что то же возвратила функция?

Отладчик в студии вполне способен функции вызывать. С лямбдами, правда, у него проблема.

AVK>>Ну и? Намного сложнее такая каша читается.

AN>Но по крайней мере понятно, что делается без всяких знаний об остальном.

Оно и без переменных прекрасно понятно. Весь этот мусор никакой полезной информации не несет, только засоряет код.

AVK>>Тогда срочно отучайся от таких привычек. Если тебя, конечно, профессиональный рост интересует.

AN>Честно говоря не вижу связи, а без учебы и так неинтересно.

Не видишь связи между умением писать лаконичный код и профессиональным ростом? Да, тут я вряд ли чем помочь смогу. Могу только сказать, что в моей текущей команде тебе либо пришлось бы быстро отказываться от таких странных принципов, либо расстаться.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[13]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 01.12.11 21:20
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AN>>>>А при чем двойной запрос и хуже читается?

AVK>>>Вопрос непонятен.
AN>>
AN>>Но твой вариант еще и хуже читается, так что никакого смысла в двойном запросе нету.
AN>>

AN>>Этоя твой ответ не понял

AVK>В твоем варианте кода сильно больше, и он не полностью декларативный. Как следствие — читаемость его хуже.

Ну это мнение я уже слышал, я же не вижу связи между "хуже читается" и "двойным запросом". Или это просто две разных фразы?

AVK>>>Count и Single ленивость сворачивают.

AN>>Ну вот и новое узнал

AVK>Только заучивать это не надо. Достаточно понять, что переход от перечисления к скалярной величине в принципе не может не сворачивать ленивость.

В принципе да — это нужно "чувствовать"

AVK>>>Ты планируешь всю жизнь на одном месте работать?

AN>>Я и так сейчас по проектам работаю. Сделал и "свободен". Сейчас просто "большой" попался. Хотя и не люблю без особой нужды нормальное место менять.

AVK>Ну значит все может измениться.

Всё может быть, хотя здесь бы я и следующий проект "взял". Позитива гораздо больше, чем негатива.

AN>>>>Я привык знать тип каждой переменной

AVK>>>От дурных привычек нужно отучаться.
AN>>Отчего считаешь дурной привычкой?

AVK>Отвлекает мозги ненужными подробностями и стимулирует нормальные имена переменным давать.

Ну имена я то чисто для примера короткие взял, пример то "абстрактный" и хотелось показать совсем другое. "Нормальные имена" бы отвлекали.

AVK>>>Список чего?

AN>>список элементов.

AVK>Все равно непонятно.

Ну допустим этот
List<Abc> x1 = A();


AVK>>>Да все как обычно. Что именно тебя смущает? И зачем вообще тебе часто отлаживать формирование дерева запроса?

AN>>Это не обязательно дерево запроса — это принцип.

AVK>В задницу все принципы, мешающие писать хорошо читаемый и лаконичный код.

В задницу лаконичный код который может прочитать один человек из команды

AN>> Вот если это будет возврат для Funct1 и она используется так

AN>>
AN>>g(Funct1)
AN>>

AN>>и насколько будет удобно глянуть что то же возвратила функция?

AVK>Отладчик в студии вполне способен функции вызывать. С лямбдами, правда, у него проблема.

Возможно я опять чего то не знаю (а не знаю я гораздо больше, чем знаю ). Как мне глянуть в 2008 студии значение вызвращенное функцией? Например, что возвратит функция С()?

AVK>>>Ну и? Намного сложнее такая каша читается.

AN>>Но по крайней мере понятно, что делается без всяких знаний об остальном.

AVK>Оно и без переменных прекрасно понятно. Весь этот мусор никакой полезной информации не несет, только засоряет код.

Возможно для стандартного запроса к базе это и так. Но вот скажи что делает эта строка?
return A().B().C().D();


AVK>>>Тогда срочно отучайся от таких привычек. Если тебя, конечно, профессиональный рост интересует.

AN>>Честно говоря не вижу связи, а без учебы и так неинтересно.

AVK>Не видишь связи между умением писать лаконичный код и профессиональным ростом? Да, тут я вряд ли чем помочь смогу. Могу только сказать, что в моей текущей команде тебе либо пришлось бы быстро отказываться от таких странных принципов, либо расстаться.

Ну, работа в команде это совсем другая тема. И если не иметь в виду кокретные личности (Ведь мы все же абстрактно разговариваем, не так ли?). То для нормального проекта я бы не взял "умника" пишущего лаконичный код. Поддерживать подобный код достаточно тяжело. Смотришь на строчку и думаешь, что же тут хотели сэкономить? Так как что делает строка с первого взгляда совсем не ясно.
(z ||= []) << 'test'

(это к теме Руби)
По моему мнению, в многих случаях, нужно иметь не лаконичный, а понятный и "удобный код". Хотя это и сильно относительные понятия.
Но пожалуй, это обсуждение для форума "философия..."
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[14]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.12.11 11:01
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Ну это мнение я уже слышал, я же не вижу связи между "хуже читается" и "двойным запросом". Или это просто две разных фразы?


Это две разные проблемы.

AVK>>Отвлекает мозги ненужными подробностями и стимулирует нормальные имена переменным давать.

AN>Ну имена я то чисто для примера короткие взял

Наличие типа рядом провоцирует дать короткое имя, так как имя типа подсознательно является частью описания переменной.

AVK>>В задницу все принципы, мешающие писать хорошо читаемый и лаконичный код.

AN>В задницу лаконичный код который может прочитать один человек из команды

А с чего ты взял, что один человек? У большинства опытных программистов проблем, которые ты описываешь, нет.

AVK>>Отладчик в студии вполне способен функции вызывать. С лямбдами, правда, у него проблема.

AN>Возможно я опять чего то не знаю (а не знаю я гораздо больше, чем знаю ). Как мне глянуть в 2008 студии значение вызвращенное функцией? Например, что возвратит функция С()?

Так и написать в окошке отладчика — A().B().C().

AVK>>Оно и без переменных прекрасно понятно. Весь этот мусор никакой полезной информации не несет, только засоряет код.

AN>Возможно для стандартного запроса к базе это и так. Но вот скажи что делает эта строка?
AN>
AN>return A().B().C().D();
AN>


Вызывает последовательно функции A, В, С и D

AN>По моему мнению, в многих случаях, нужно иметь не лаконичный, а понятный и "удобный код".


Очень часто лаконичный это и есть понятный и удобный.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[15]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 02.12.11 18:13
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AVK>>>Отвлекает мозги ненужными подробностями и стимулирует нормальные имена переменным давать.

AN>>Ну имена я то чисто для примера короткие взял

AVK>Наличие типа рядом провоцирует дать короткое имя, так как имя типа подсознательно является частью описания переменной.

Никогда ни у меня, ни у решарпера такой провокации не возникало

AVK>>>В задницу все принципы, мешающие писать хорошо читаемый и лаконичный код.

AN>>В задницу лаконичный код который может прочитать один человек из команды

AVK>А с чего ты взял, что один человек? У большинства опытных программистов проблем, которые ты описываешь, нет.

Мне кажется, дело не в опытности, а в "привычке". Например, во всех проектах, с которыми я сталкивался все обращения к базе были исключительно в одной компоненте / отдельных файлах, методы которых я просто вызывал. А то что писал сам было еще на плюсах. Я если бы только и делал, что писал Линкушные запросы, то подобная запись была бы просто родной и сразу бы "стал опытным"
Но я вообще то имел в виду не "наши" конкретные строки, а код "особо одаренных".

AVK>>>Отладчик в студии вполне способен функции вызывать. С лямбдами, правда, у него проблема.

AN>>Возможно я опять чего то не знаю (а не знаю я гораздо больше, чем знаю ). Как мне глянуть в 2008 студии значение вызвращенное функцией? Например, что возвратит функция С()?

AVK>Так и написать в окошке отладчика — A().B().C().

Нужен не повторный вызов функций, а именно конкретное значение, которое "уже выстрадал в отладчике".
Желательно также иметь это значение в окне "авто". Да и еще историю.
Например, имея x4=5, я могу глянуть списочек x1 и проверить может ли оно вообще таким быть.

AVK>>>Оно и без переменных прекрасно понятно. Весь этот мусор никакой полезной информации не несет, только засоряет код.

AN>>Возможно для стандартного запроса к базе это и так. Но вот скажи что делает эта строка?
AN>>
AN>>return A().B().C().D();
AN>>


AVK>Вызывает последовательно функции A, В, С и D

Ну и насколько полезна подобная информация?
А тут я сразу вижу, что возвращается список из которого выбирается один элемент. Их которого "добывается" специальная строка на основе которой рассчитывается некое число. Ну и заодно проще проверку на нуль сделать/ обнаружить.
List<Abc> x1 = A();
Abc x2 = x1.B();
MyString x3 = x2.C();
int x4 = x3.D();
return x4;


AN>>По моему мнению, в многих случаях, нужно иметь не лаконичный, а понятный и "удобный код".


AVK>Очень часто лаконичный это и есть понятный и удобный.

Как то у меня совсем противоположный опыт.
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re: Ошибка: Экспорт в HTML вылетает
От: Буравчик Россия  
Дата: 02.12.11 22:22
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>При экспорте в HTML происходит вылет по недостатку параметров

AN>
       public static Forum CreateInstance()
AN>        {
AN>            return TypeAccessor<Forum>.CreateInstance();
AN>        }
AN>


AN>
       public Forum(IServiceProvider provider)
AN>        {
AN>            _serviceProvider = provider;
AN>            _imageManager = ServiceProvider.GetRequiredService<IForumImageManager>();
AN>        }
AN>


Достаточно просто протащить ServiceProvider в BuildHTMLPage.

  патч
# HG changeset patch
# User buravchik
# Date 1322847769 -14400
# Node ID 97579d3042597707fb3bc7c060d9d308e0ef30ff
# Parent  70d7936492a46f970989ed79f8f17d63fa1cadae
Fix #117. Теперь экспорт сообщений, в принципе, работает.

diff -r 70d7936492a4 -r 97579d304259 Janus/Core/ObjectModel/Features/Forum.cs
--- a/Janus/Core/ObjectModel/Features/Forum.cs    Wed Nov 30 17:23:35 2011 +0400
+++ b/Janus/Core/ObjectModel/Features/Forum.cs    Fri Dec 02 21:42:49 2011 +0400
@@ -389,10 +389,5 @@
         }
 
         #endregion
-
-        public static Forum CreateInstance()
-        {
-            return TypeAccessor<Forum>.CreateInstance();
-        }
     }
 }
\ No newline at end of file
diff -r 70d7936492a4 -r 97579d304259 Janus/Features/ForumViewer/Export/MessageExporter.cs
--- a/Janus/Features/ForumViewer/Export/MessageExporter.cs    Wed Nov 30 17:23:35 2011 +0400
+++ b/Janus/Features/ForumViewer/Export/MessageExporter.cs    Fri Dec 02 21:42:49 2011 +0400
@@ -100,7 +100,7 @@
                                     Export2Text(messages, fs, pd);
                                     break;
                                 case ExportFormat.HTML:
-                                    Export2HTML(messages, fs, pd);
+                                    Export2HTML(provider, messages, fs, pd);
                                     break;
                                 case ExportFormat.MHT:
                                     Export2Mht(provider, messages, fs, pd);
@@ -285,10 +285,10 @@
         #region Р­РєСЃРїРѕСЂС‚ РІ html
 
         #region Собственно в html
-        private static void Export2HTML(IList<IMsg> msgs, Stream fs, ProgressDelegate pd)
+        private static void Export2HTML(IServiceProvider provider, IList<IMsg> msgs, Stream fs, ProgressDelegate pd)
         {
             using (var sw = new StreamWriter(fs, Encoding.Default))
-                sw.Write(BuildHTMLPage(msgs, pd, false));
+                sw.Write(BuildHTMLPage(provider, msgs, pd, false));
         }
         #endregion
 
@@ -335,7 +335,7 @@
                     codePage));
                 sw.Flush();
 
-                var htmlText = BuildHTMLPage(msgs, pd, true);
+                var htmlText = BuildHTMLPage(provider, msgs, pd, true);
                 var page = Encoding.GetEncoding(codePage).GetBytes(htmlText);
                 fs.Write(page, 0, page.Length);
 
@@ -374,12 +374,11 @@
         private const string _messageFormatResource = _resourcePrefix + "MessageFormat.html";
         private const string _resourcePrefix = "Rsdn.Janus.Features.ForumViewer.Export.";
 
-        private static string BuildHTMLPage(IList<IMsg> msgs,
-            ProgressDelegate pd, bool processSmiles)
+        private static string BuildHTMLPage(IServiceProvider provider, IList<IMsg> msgs, ProgressDelegate pd, bool processSmiles)
         {
             var formatter = new TextFormatter();
             var sb = new StringBuilder();
-            var forum = Forum.CreateInstance();
+            var forum = new Forum(provider);
             forum.LoadData(msgs[0].ForumID);
             sb.AppendFormat(
                 @"<tr><td class='s' colspan='2' align='center'>{0}&nbsp;<font size='1'>[{1}]</font></td></tr>",


А вот с ошибкой при экспорте сообщений в Поиске все сложнее. И поэтому вопрос: а надо ли вообще экспорт из избранного?

Есть три вида экспорта. И все они имеют ограничения в окне поиска:
1. Выделенные сообщения — в окне поиска сейчас нельзя выделить несколько сообщений
2. Выделенные темы — также нельзя выделить несколько сообщений (а значит тем), а также при выгрузке выгружается только одно сообщение из темы, а не вся тема
3. Весь форум — возможность отключена в окне поиска

Получается, что возможности экспорта из поиска ограничены. Так может вообще экспорт найденных сообщений убрать? Думаю экспортом сообщений вообще мало пользуются, а уж из поиска и подавно.
... << RSDN@Home (RF) 1.2.0 alpha 5 rev. 17>>
Best regards, Буравчик
Re[16]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.12.11 23:07
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>>Наличие типа рядом провоцирует дать короткое имя, так как имя типа подсознательно является частью описания переменной.

AN>Никогда ни у меня, ни у решарпера такой провокации не возникало

При чем тут решарпер вообще непонятно, а насчет не возникало ... Я тоже так думал, пока вывод типов в шарпе не появился.

AVK>>Так и написать в окошке отладчика — A().B().C().

AN>Нужен не повторный вызов функций, а именно конкретное значение, которое "уже выстрадал в отладчике".

Не пиши функций с побочным эффектом. Конкретно в обсуждаемом случае почти все функции LINQ BLT чистые, так что никакой разницы нет.

AN>Например, имея x4=5, я могу глянуть списочек x1 и проверить может ли оно вообще таким быть.


Все это нужно только после того, как ты локализовал внутри метода проблему. И ради такого, если уж приспичило, несложно вытащить промежуточное вычисление в переменную, а потом вернуть все обратно.

AVK>>Вызывает последовательно функции A, В, С и D

AN>Ну и насколько полезна подобная информация?

Так ты пример такой привел.

AN>А тут я сразу вижу, что возвращается список из которого выбирается один элемент.


А если бы ты нормальные названия писал, а не АВС, то это тоже было бы понятно.
Да, студия и решарпер умеют показывать типы функций, если что. В том числе и в таком выражении. Ctrl+Q/Ctrl+P не пробовал нажимать?

AVK>>Очень часто лаконичный это и есть понятный и удобный.

AN>Как то у меня совсем противоположный опыт.

Ну вот твой опыт в конторе, которая до 3.0 даже не добрела, он, как бы это помягче, не очень релевантен.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[2]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.12.11 23:07
Оценка:
Здравствуйте, Буравчик, Вы писали:

AN>> return TypeAccessor<Forum>.CreateInstance();


Б>Достаточно просто протащить ServiceProvider в BuildHTMLPage.


TypeAccessor это вообще хвосты от долинкового BLT, его вообще надо приговаривать без вариантов.

Б>Получается, что возможности экспорта из поиска ограничены. Так может вообще экспорт найденных сообщений убрать? Думаю экспортом сообщений вообще мало пользуются, а уж из поиска и подавно.


Насколько я знаю, экспортом в HTML пользуются. В основном для совсем оффлайнового чтения сообщений.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[2]: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 03.12.11 08:25
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>А вот с ошибкой при экспорте сообщений в Поиске все сложнее. И поэтому вопрос: а надо ли вообще экспорт из избранного?


Экспорт из любой точки приложения — хорошая опция.

Б>Есть три вида экспорта. И все они имеют ограничения в окне поиска:

Б>1. Выделенные сообщения — в окне поиска сейчас нельзя выделить несколько сообщений

Скорее всего баг.

Б>2. Выделенные темы — также нельзя выделить несколько сообщений (а значит тем), а также при выгрузке выгружается только одно сообщение из темы, а не вся тема


А как в поиске отделить темы от сообщений? При экспорте понятно, а в поиске вроде только сообщения.

Б>3. Весь форум — возможность отключена в окне поиска


И совершенно правильно!)

Б>Получается, что возможности экспорта из поиска ограничены. Так может вообще экспорт найденных сообщений убрать? Думаю экспортом сообщений вообще мало пользуются, а уж из поиска и подавно.


Возможность экспорта из поиска:
Юзкесй такой — найти все совпадения по искомой фразе, экспортировать и прочитать в плоском виде в спокойной обстановке для изучения какого-то конкретного вопроса или технологии.

Я вот больше сомниваюсь в необходимости экспорта "всего форума"..)) Даже довольно свежая база уже содержит 10 000 записей все в том же дот.нет форуме, прочитать такое за один раз да еще и без возможности пометки прочитанным? то есть после следуещей распечатки заново все перечитывать что ли? Весьма смутно..)) Функция конечно должна остаться..)

Экспорт из избранного: сохранить в плоском виде в html и закинуть в Evernote. Избранное в Янусе терял уже много раз, да и читать в эверноуте гораздо удобнее. Закинешь хороший пример и он доступен для быстрого обращения в лубой точке мира.

С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[2]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 03.12.11 18:11
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>А вот с ошибкой при экспорте сообщений в Поиске все сложнее. И поэтому вопрос: а надо ли вообще экспорт из избранного?


Б>Есть три вида экспорта. И все они имеют ограничения в окне поиска:

Б>1. Выделенные сообщения — в окне поиска сейчас нельзя выделить несколько сообщений
Видимо отключено специально, но при желании можно видимо что то придумать.
Б>2. Выделенные темы — также нельзя выделить несколько сообщений (а значит тем), а также при выгрузке выгружается только одно сообщение из темы, а не вся тема
Б>3. Весь форум — возможность отключена в окне поиска
Нафига это делать прямо из поиска, не зная размера темы. Можно перейти в форум на сообщение и оттуда уже решать.

Б>Получается, что возможности экспорта из поиска ограничены. Так может вообще экспорт найденных сообщений убрать? Думаю экспортом сообщений вообще мало пользуются, а уж из поиска и подавно.

Может все же проще исправить вылет?
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.