powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Монады
136 сообщений из 136, показаны все 6 страниц
Монады
    #38713565
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нибудь всерьёз использует свои велосипедные монады в C#?
...
Рейтинг: 0 / 0
Монады
    #38713592
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разумеется. Пока еще для Roslyn допилят свой null propagating , и когда еще это доберется до наших реалий. Для меня лично предпочтительнее написать:
Код: c#
1.
2.
3.
4.
var len = GetCustomer()
  .With(c => c.ExtraRef)
  .With(e => e.Name)
  .With(s => new int?(s.Length));


чем писать лесенку вида
Код: c#
1.
2.
3.
int? len;
if (customer != null && customer.ExtraRef != null && customer.ExtraRef.Name != null)
  len = customer.ExtraRef.Name.Length;


учитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее.
Хотя, конечно, обещаемое в Roslyn смотрится изящнее:
Код: c#
1.
int? len = GetCustomer()?.extraRef?.name?.Length;
...
Рейтинг: 0 / 0
Монады
    #38713598
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Не думаю, что null propagating полностью отменит необходимости своих костылей, так как в With можно задать любое выражение, а n/p работает только со свойствами.

Ещё меня интересует Maybe/Nullable вместо утомительного написания контрактов и проверок для null checking. Вот бы ещё ввели оператор, типа SomeMethod(SomeType !argument), эх...
...
Рейтинг: 0 / 0
Монады
    #38713603
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныРазумеется. Пока еще для Roslyn допилят свой null propagating , и когда еще это доберется до наших реалий. Для меня лично предпочтительнее написать:
Код: c#
1.
2.
3.
4.
var len = GetCustomer()
  .With(c => c.ExtraRef)
  .With(e => e.Name)
  .With(s => new int?(s.Length));


чем писать лесенку вида
Код: c#
1.
2.
3.
int? len;
if (customer != null && customer.ExtraRef != null && customer.ExtraRef.Name != null)
  len = customer.ExtraRef.Name.Length;

Не проще нормально отформатировать?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
int? len;
if 
(
    customer != null && 
    customer.ExtraRef != null && 
    customer.ExtraRef.Name != null
)
  len = customer.ExtraRef.Name.Length;


Сон Веры Павловныучитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее.Пофиг. Решается форматированием.
Сон Веры ПавловныХотя, конечно, обещаемое в Roslyn смотрится изящнее:
Код: c#
1.
int? len = GetCustomer()?.extraRef?.name?.Length;

Нах не нужно...

зы: Извращенцы...
...
Рейтинг: 0 / 0
Монады
    #38713608
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНе проще нормально отформатировать?

фу-фу-фу. монады гораздо читабельней и безопасней. очень часто приходится работать с графом объектов, и эти проверки не доставляют ни на этапе разработки, ни на этапе сопровождения.
...
Рейтинг: 0 / 0
Монады
    #38713612
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПофиг. Решается форматированием.
Нет, не пофиг. Выше приведен был самый простейший случай, и только одна монада - в реальности их может быть намного больше. Некогда на GotDotNet в блогах была статья про монадический синтатксис. сейчас из-за реорганизации это всё дело куда-то подевалось - там рассматривался такой пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
string postCode;
if (person != null)
{
  if (HasMedicalRecord(person) && person.Address != null)
  {
    CheckAddress(person.Address);
    if (person.Address.PostCode != null)
      postCode = person.Address.PostCode.ToString();
    else
      postCode = "UNKNOWN";
  }
}


и вариант решения с монадами:
Код: c#
1.
2.
3.
4.
5.
6.
string postCode = this.With(x => person)
    .If(x => HasMedicalRecord(x))]
    .With(x => x.Address)
    .Do(x => CheckAddress(x))
    .With(x => x.PostCode)
    .Return(x => x.ToString(), "UNKNOWN");


- и это опять же достаточно искусственный пример, в реальности бывает всё намного хуже. Я считаю, что это прекрасная замена бесконечным стопками if'ов (тот самый вышеупомянутый граф объектов), от которых начинает в глязах рябить.
...
Рейтинг: 0 / 0
Монады
    #38713613
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКто-нибудь всерьёз использует свои велосипедные монады в C#?Использую, работают.
...
Рейтинг: 0 / 0
Монады
    #38713625
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныАлексей КПофиг. Решается форматированием.
Нет, не пофиг. Выше приведен был самый простейший случай, и только одна монада - в реальности их может быть намного больше. Некогда на GotDotNet в блогах была статья про монадический синтатксис. сейчас из-за реорганизации это всё дело куда-то подевалось - там рассматривался такой пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
string postCode;
if (person != null)
{
  if (HasMedicalRecord(person) && person.Address != null)
  {
    CheckAddress(person.Address);
    if (person.Address.PostCode != null)
      postCode = person.Address.PostCode.ToString();
    else
      postCode = "UNKNOWN";
  }
}


и вариант решения с монадами:
Код: c#
1.
2.
3.
4.
5.
6.
string postCode = this.With(x => person)
    .If(x => HasMedicalRecord(x))]
    .With(x => x.Address)
    .Do(x => CheckAddress(x))
    .With(x => x.PostCode)
    .Return(x => x.ToString(), "UNKNOWN");

Выделение метода?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
string GetPostCode(Person person)
{
    if 
    (
        person != null && 
        HasMedicalRecord(person) && 
        person.Address != null
    )
    {
       CheckAddress(person.Address);
       return person.Address.PostCode != null ? person.Address.PostCode.ToString() : "UNKNOWN";
    }
    return null;
}


Сон Веры Павловныи это опять же достаточно искусственный пример, в реальности бывает всё намного хуже. Я считаю, что это прекрасная замена бесконечным стопками if'ов (тот самый вышеупомянутый граф объектов), от которых начинает в глязах рябитьКаждый сложный пример всегда можно разбить на множество простых.
...
Рейтинг: 0 / 0
Монады
    #38713629
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей ККаждый сложный пример всегда можно разбить на множество простых.

Монады это как раз и делают, только универсально. Задача обхода графов объектов вполне типичная, и повторяется множество раз. Вполне логично запилить универсальное решение по принципу less is more . Тоже самое можно сказать и об LINQ и лямбдах -- зачем они нужны, если есть циклы и всегда можно разбить метод на кучку мелких методов.
...
Рейтинг: 0 / 0
Монады
    #38713630
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИспользую, работают.

Maybe тоже используешь?
...
Рейтинг: 0 / 0
Монады
    #38713633
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей ККаждый сложный пример всегда можно разбить на множество простых.

Монады это как раз и делают, только универсально. Задача обхода графов объектов вполне типичная, и повторяется множество раз.Эта задача успешно решается родными средствами языка.
hVosttВполне логично запилить универсальное решение по принципу less is more .На любителя.
hVosttТоже самое можно сказать и об LINQ и лямбдах -- зачем они нужны, если есть циклы и всегда можно разбить метод на кучку мелких методов.Там экономится много строк кода. Тут экономии не вижу.
...
Рейтинг: 0 / 0
Монады
    #38713636
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЭта задача успешно решается родными средствами языка.

Ну так кастомная реализация монад -- это и есть решение родными средствами языка. Используются методы расширения, функторы и деревья выражений.

Монадический синтаксис более выразителен и лаконичен вместо лесенки условий или выделения методов. У разбиения метода на более мелкие методы тоже есть придел, и когда-то может встать поперёк горла одни и те же действия, без которых можно вполне обойтись.

Алексей КТам экономится много строк кода. Тут экономии не вижу.

Экономия и выразительность намерений (что даже гораздо важнее) более чем очевидны.
...
Рейтинг: 0 / 0
Монады
    #38713640
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос всплыл после прочтения статьи Контракты vs. Монады? , и мне стало интересно, кто-нибудь пробовал внедрить монады для борьбы с нулевыми ссылками, или обходимся контрактами и чеками в каждом методе?
...
Рейтинг: 0 / 0
Монады
    #38713648
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КЭта задача успешно решается родными средствами языка.

Ну так кастомная реализация монад -- это и есть решение родными средствами языка. Используются методы расширения, функторы и деревья выражений .System.LINQ.Expression? И компилируются поди налету? Видимо, торопиться некуда.
hVosttМонадический синтаксис более выразителен и лаконичен вместо лесенки условий или выделения методов.В данном случае - нет.
hVosttУ разбиения метода на более мелкие методы тоже есть приделМожно обойтись и без выделения метода. Никто не заставляет.
hVostt, и когда-то может встать поперёк горла одни и те же действия, без которых можно вполне обойтись.Описывать на каждый чих лямбду удовольствие тоже не из приятных.
hVosttАлексей КТам экономится много строк кода. Тут экономии не вижу.

Экономия и выразительность намерений (что даже гораздо важнее) более чем очевидны.Субъективно.
...
Рейтинг: 0 / 0
Монады
    #38713658
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVosttМонадический синтаксис более выразителен и лаконичен вместо лесенки условий или выделения методов.В данном случае - нет.

Трудно спорить с учётом того, что никакого конкретного (данного) случая не обсуждается.
...
Рейтинг: 0 / 0
Монады
    #38713660
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей Кпропущено...
В данном случае - нет.

Трудно спорить ...Я не спорю, я делюсь впечатлениями. :-)
hVostt... с учётом того, что никакого конкретного (данного) случая не обсуждается.Выше был приведён неубедительный для меня пример. Предложите другой.

зы:
Код: c#
1.
int? len = GetCustomer()?.extraRef?.name?.Length;

На счёт этого я погорячился. Поддержка этого на уровне языка будет полезна.
...
Рейтинг: 0 / 0
Монады
    #38713674
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAИспользую, работают.

Maybe тоже используешь?Конечно.
...
Рейтинг: 0 / 0
Монады
    #38713676
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КВыше был приведён неубедительный для меня пример. Предложите другой.

Ну так экстраполируйте :) Представьте граф из 10 вложенных объектов. В чём великий смысл описывать одно и тоже два раза? Это же типичная задача. Сначала проверять, затем извлекать.
...
Рейтинг: 0 / 0
Монады
    #38713678
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttпропущено...
Maybe тоже используешь?Конечно.

О, круто!
...
Рейтинг: 0 / 0
Монады
    #38713684
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, если разрешить в команде более чем из 3-х человек каждому форматировать код так, как он считает "нормально", то через полгода осознание того, что лучше бы использовали монады, само придёт
...
Рейтинг: 0 / 0
Монады
    #38713688
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КВыше был приведён неубедительный для меня пример. Предложите другой.

Ну так экстраполируйте :)Экстраполировал, ужаснулся. :-)
hVosttПредставьте граф из 10 вложенных объектов. В чём великий смысл описывать одно и тоже два раза? Это же типичная задача. Сначала проверять, затем извлекать.Повторюсь. Не вижу смысла использовать лямбды там, где без них можно обойтись.
...
Рейтинг: 0 / 0
Монады
    #38713702
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДумаю, если разрешить в команде более чем из 3-х человек каждому форматировать код так, как он считает "нормально", то через полгода осознание того, что лучше бы использовали монады, само придёт Административные способы воздействия более эффективны.
...
Рейтинг: 0 / 0
Монады
    #38713723
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНе вижу смысла использовать лямбды там, где без них можно обойтись.

так везде можно....
...
Рейтинг: 0 / 0
Монады
    #38713728
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей КНе вижу смысла использовать лямбды там, где без них можно обойтись.

так везде можно....Но не везде нужно.
...
Рейтинг: 0 / 0
Монады
    #38713864
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAДумаю, если разрешить в команде более чем из 3-х человек каждому форматировать код так, как он считает "нормально", то через полгода осознание того, что лучше бы использовали монады, само придёт Административные способы воздействия более эффективны.Зачем было предлагать то, что уже запрещено административными способами?
...
Рейтинг: 0 / 0
Монады
    #38713868
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К, а есть реальный пример применения административных спосбов? Сколько человек в команде?
...
Рейтинг: 0 / 0
Монады
    #38713899
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей К, а есть реальный пример применения административных спосбов?Представить стенограмму производственного совещания? Ничего особенного. Всё как у всех.
skyANAСколько человек в команде?7 программистов.
...
Рейтинг: 0 / 0
Монады
    #38713901
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Административные способы воздействия более эффективны.Зачем было предлагать то, что уже запрещено административными способами? Применение монад, само по себе, вряд ли повысит культуру оформления кода.
...
Рейтинг: 0 / 0
Монады
    #38713951
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПрименение монад, само по себе, вряд ли повысит культуру оформления кода.

А кто называет их серебряной пилюлей?
...
Рейтинг: 0 / 0
Монады
    #38713964
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КПрименение монад, само по себе, вряд ли повысит культуру оформления кода.

А кто называет их серебряной пилюлей? 16404644
...
Рейтинг: 0 / 0
Монады
    #38714001
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVosttпропущено...


А кто называет их серебряной пилюлей? 16404644 Кривая у Вас логика
...
Рейтинг: 0 / 0
Монады
    #38714008
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
16404644 Кривая у Вас логика Логика не может быть кривой. Логика или есть, или её нет. :-)
...
Рейтинг: 0 / 0
Монады
    #38714009
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAАлексей К, а есть реальный пример применения административных спосбов?Представить стенограмму производственного совещания? Ничего особенного. Всё как у всех.А у нас StyleCop и никакое производственные совещания не нужно.
А на какую тему совещание-то было? "Ёб! Кто так код форматирует?!"
...
Рейтинг: 0 / 0
Монады
    #38714012
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА на какую тему совещание-то было? "Ёб! Кто так код форматирует?!" Типа того. :-)
...
Рейтинг: 0 / 0
Монады
    #38714014
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Кривая у Вас логика Логика не может быть кривой. Логика или есть, или её нет. :-)Что, вышку не заканчивали? Не помним что такое секвенция?
...
Рейтинг: 0 / 0
Монады
    #38714015
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА у нас StyleCop и никакое производственные совещания не нужно.Ок. Подумаю об этом.
...
Рейтинг: 0 / 0
Монады
    #38714020
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Логика не может быть кривой. Логика или есть, или её нет. :-)Что, вышку не заканчивали? Не помним что такое секвенция? Давно это было... :-)
...
Рейтинг: 0 / 0
Монады
    #38714027
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Кривая у Вас логика Логика не может быть кривой. Логика или есть, или её нет. :-)
бывет ещё женская логика
...
Рейтинг: 0 / 0
Монады
    #38714056
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей Кпропущено...
Логика не может быть кривой. Логика или есть, или её нет. :-)
бывет ещё женская логика Д.В. Беклемишев Заметки о женской логике.
...
Рейтинг: 0 / 0
Монады
    #38714235
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет синих букв, зато есть русские :)
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
......
        DocumentSvIP.СвУчетНО.NotNullActionClass(a => a.ДатаПостУч.NotNullActionStruct(b =>
                {
                    regObj.SetAttributeValue(138200, b);
                }));
                DocumentSvIP.СвСтатус_РО.NotNullActionClass(a => a.СвСтатус.NotNullActionClass(b => b.ДатаПрекрИП.NotNullActionStruct(c =>
                {
                    regObj.SetAttributeValue(138300, c);
                })));
                DocumentSvIP.СвУчетНО.NotNullActionClass(a => a.СвНО.NotNullActionClass(b =>
                {
                    regObj.SetAttributeValue(138400, b.КодНО);
                    regObj.SetAttributeValue(138500, b.НаимНО);
                }));
                DocumentSvIP.СвАдрМЖ.NotNullActionClass(a => a.АдресРФ.NotNullActionClass(b =>
                {
                    regObj.SetAttributeValue(136400, b.Индекс);
                    regObj.SetAttributeValue(136500, b.КодАдрКладр);
                    regObj.SetAttributeValue(136600, b.КодРегион);
                    b.Регион.NotNullActionClass(c =>
                    {
                        regObj.SetAttributeValue(136700, c.ТипРегион);
                        regObj.SetAttributeValue(136800, c.НаимРегион);
                    });
                    b.Район.NotNullActionClass(c =>
                    {
                        regObj.SetAttributeValue(136900, c.ТипРайон);
                        regObj.SetAttributeValue(137000, c.НаимРайон);
                    });
                    b.Город.NotNullActionClass(c =>
                    {
                        regObj.SetAttributeValue(137100, c.ТипГород);
                        regObj.SetAttributeValue(137200, c.НаимГород);
                    });
                    b.НаселПункт.NotNullActionClass(c =>
                    {
                        regObj.SetAttributeValue(137300, c.ТипНаселПункт);
                        regObj.SetAttributeValue(137400, c.НаимНаселПункт);
                    });
                    b.Улица.NotNullActionClass(c =>
                    {
                        regObj.SetAttributeValue(137500, c.ТипУлица);
                        regObj.SetAttributeValue(137600, c.НаимУлица);
                    });
                    regObj.SetAttributeValue(137700, b.Дом);
                    regObj.SetAttributeValue(137800, b.Корпус);
                    regObj.SetAttributeValue(137900, b.Кварт);
                }));
......
...
Рейтинг: 0 / 0
Монады
    #38714264
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

жесть!
...
Рейтинг: 0 / 0
Монады
    #38714270
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
почему?
...
Рейтинг: 0 / 0
Монады
    #38714276
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ, а что такое NotNull для структур?
...
Рейтинг: 0 / 0
Монады
    #38714289
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Код: c#
1.
2.
3.
4.
5.
6.
7.
 public static void NotNullActionStruct<T>(this T obj, Action<T> act) where T : struct
        {
            if (!obj.Equals(default(T)))
            {
                act(obj);
            }
        }


Для дат, там в исходных данных так было, 01.01.0001 = null(хз)
...
Рейтинг: 0 / 0
Монады
    #38714310
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, и зачем тогда два метода: NotNullActionClass и NotNullActionStruct?
...
Рейтинг: 0 / 0
Монады
    #38714327
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
           var d = default(DateTime);
            if (d != null)
            {
                Console.WriteLine(d);
            }
            var o = default(object);
            if (o != null)
            {
                Console.WriteLine(o);
            }
...
Рейтинг: 0 / 0
Монады
    #38714397
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВhVostt,
почему?

ядрёное смешивание языков ) понимаю ещё 1С там всё по-русски (ну почти).
...
Рейтинг: 0 / 0
Монады
    #38714418
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANA,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
           var d = default(DateTime);
            if (d != null)
            {
                Console.WriteLine(d);
            }
            var o = default(object);
            if (o != null)
            {
                Console.WriteLine(o);
            }

И?

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
using System;

namespace NotNullApplication
{
    class Program
    {
        static void NotNullAction<T>(T obj, Action<T> act)
        {
            if (!Equals(obj, default(T)))
            {
                act(obj);
            }
        }

        static void Main()
        {
            NotNullAction(default(DateTime), d => Console.WriteLine(d));
            NotNullAction(DateTime.MinValue, d => Console.WriteLine(d));
            NotNullAction(DateTime.Now, d => Console.WriteLine(d));

            NotNullAction(default(Int32), Console.WriteLine);
            NotNullAction(0, Console.WriteLine);
            NotNullAction(1, Console.WriteLine);

            NotNullAction(default(String), Console.WriteLine);
            NotNullAction("Hello, Vasya!", Console.WriteLine);

            NotNullAction(default(Vasya), Console.WriteLine);
            NotNullAction(new Vasya(), Console.WriteLine);

            Console.ReadKey();
        }
    }

    class Vasya
    {
        public override string ToString()
        {
            return "Vasya";
        }
    }
}
...
Рейтинг: 0 / 0
Монады
    #38714448
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕвгенийВhVostt,
почему?

ядрёное смешивание языков ) понимаю ещё 1С там всё по-русски (ну почти).
Это импорт из единого государственного реестра индивидуальных предпринимателей. Там xml приходит с тегами с кириллицей и есть схема. Быстрее сгенерировать классы и десериализовать стандартными средствами, чем переименовывать такую фигню, как
Код: xml
1.
2.
<СвОКВЭД ГРНИП="41379879971" ДатаНачДейств="2013-03-19" КодОКВЭД="70.31.11" ПрОснДоп="2">
            </СвОКВЭД>


не известно во что.
...
Рейтинг: 0 / 0
Монады
    #38714452
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
obj!=null
быстрее чем
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
/// <summary>Определяет, считаются ли равными указанные экземпляры <see cref="T:System.Object" />.</summary>
/// <returns>true, если указанные объекты равны; в противном случае — false.</returns>
/// <param name="objA">Первый объект <see cref="T:System.Object" /> для сравнения. </param>
/// <param name="objB">Второй объект <see cref="T:System.Object" /> для сравнения. </param>
/// <filterpriority>2</filterpriority>
[__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
public static bool Equals(object objA, object objB)
{
	return objA == objB || (objA != null && objB != null && objA.Equals(objB));
}


:)
...
Рейтинг: 0 / 0
Монады
    #38714455
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttядрёное смешивание языков ) понимаю ещё 1С там всё по-русски (ну почти).
Опять ты, Хвост, лезешь туда, в чем не разбираешься... Бить тебя надо по рукам :)
http://smev.gosuslugi.ru/portal/api/files/registryfile/2699/Руководство пользователя электронного сервиса СМЭВ.doc] http://smev.gosuslugi.ru/portal/api/files/registryfile/2699/Руководство пользователя электронного сервиса СМЭВ.doc
...
Рейтинг: 0 / 0
Монады
    #38714483
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttядрёное смешивание языков ) понимаю ещё 1С там всё по-русски (ну почти).
Опять ты, Хвост, лезешь туда, в чем не разбираешься... Бить тебя надо по рукам :)
http://smev.gosuslugi.ru/portal/api/files/registryfile/2699/Руководство пользователя электронного сервиса СМЭВ.doc] http://smev.gosuslugi.ru/portal/api/files/registryfile/2699/Руководство пользователя электронного сервиса СМЭВ.doc

апять ты со своей кодагенирацией?
ну ладна-ладна... убедил чертяка красноричивый
...
Рейтинг: 0 / 0
Монады
    #38714486
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЭто импорт из единого государственного реестра индивидуальных предпринимателей. Там xml приходит с тегами с кириллицей и есть схема. Быстрее сгенерировать классы и десериализовать стандартными средствами, чем переименовывать такую фигню, как

да эт понятно. просто меня всегда убивает эти русские ДатаНачДейств
а ещё наименование полей в системах с ограничением на 8 симоволов, типа COD_ANAL
...
Рейтинг: 0 / 0
Монады
    #38714498
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловныучитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее

пофик, решается доп свойством с понятным именем, типа

Код: c#
1.
2.
3.
4.
if (model.HasExtraRefName)
{
    len = customer.ExtraRef.Name.Length;
}
...
Рейтинг: 0 / 0
Монады
    #38714611
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77Сон Веры Павловныучитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее

пофик, решается доп свойством с понятным именем, типа

Код: c#
1.
2.
3.
4.
if (model.HasExtraRefName)
{
    len = customer.ExtraRef.Name.Length;
}


Понижается абстракция и количество повторно используемого кода. Пусть больше пашет компилятор и не аммортизируется клава!
...
Рейтинг: 0 / 0
Монады
    #38719421
FatherSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?. вещь, не ввели еще? вроде не компилится сразу 13 ошибок выдало
...
Рейтинг: 0 / 0
Монады
    #38719426
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FatherSql?. вещь, не ввели еще? вроде не компилится сразу 13 ошибок выдало

Нэт.
...
Рейтинг: 0 / 0
Монады
    #38719430
FatherSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныРазумеется. Пока еще для Roslyn допилят свой null propagating , и когда еще это доберется до наших реалий. Для меня лично предпочтительнее написать:
Код: c#
1.
2.
3.
4.
var len = GetCustomer()
  .With(c => c.ExtraRef)
  .With(e => e.Name)
  .With(s => new int?(s.Length));


чем писать лесенку вида
Код: c#
1.
2.
3.
int? len;
if (customer != null && customer.ExtraRef != null && customer.ExtraRef.Name != null)
  len = customer.ExtraRef.Name.Length;


учитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее.
Хотя, конечно, обещаемое в Roslyn смотрится изящнее:
Код: c#
1.
int? len = GetCustomer()?.extraRef?.name?.Length;


вис это для рослина?
...
Рейтинг: 0 / 0
Монады
    #38719434
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FatherSqlСон Веры ПавловныРазумеется. Пока еще для Roslyn допилят свой null propagating , и когда еще это доберется до наших реалий. Для меня лично предпочтительнее написать:
Код: c#
1.
2.
3.
4.
var len = GetCustomer()
  .With(c => c.ExtraRef)
  .With(e => e.Name)
  .With(s => new int?(s.Length));


чем писать лесенку вида
Код: c#
1.
2.
3.
int? len;
if (customer != null && customer.ExtraRef != null && customer.ExtraRef.Name != null)
  len = customer.ExtraRef.Name.Length;


учитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее.
Хотя, конечно, обещаемое в Roslyn смотрится изящнее:
Код: c#
1.
int? len = GetCustomer()?.extraRef?.name?.Length;


вис это для рослина?Нет, это просто extension method.
...
Рейтинг: 0 / 0
Монады
    #38719448
FatherSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAFatherSqlпропущено...

вис это для рослина?Нет, это просто extension method.
свой чтоли
...
Рейтинг: 0 / 0
Монады
    #38719481
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FatherSqlskyANAпропущено...
Нет, это просто extension method.
свой чтолиДа.
...
Рейтинг: 0 / 0
Монады
    #38719699
НемоКэп42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныРазумеется. Пока еще для Roslyn допилят свой null propagating , и когда еще это доберется до наших реалий. Для меня лично предпочтительнее написать:
Код: c#
1.
2.
3.
4.
var len = GetCustomer()
  .With(c => c.ExtraRef)
  .With(e => e.Name)
  .With(s => new int?(s.Length));


чем писать лесенку вида
Код: c#
1.
2.
3.
int? len;
if (customer != null && customer.ExtraRef != null && customer.ExtraRef.Name != null)
  len = customer.ExtraRef.Name.Length;


учитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее.
Хотя, конечно, обещаемое в Roslyn смотрится изящнее:
Код: c#
1.
int? len = GetCustomer()?.extraRef?.name?.Length;



Я так делаю

Код: c#
1.
2.
3.
4.
if (
    customer != null 
    && customer.ExtraRef != null 
    && customer.ExtraRef.Name != null)


И короче, и не менее понятно. И вообще, когда много параметров у метода или условий проверки во всяких ифах - в столбик пишу.

А монады - это же каждый раз метод вызывать. Напрасная растрата ресурсов.
...
Рейтинг: 0 / 0
Монады
    #38719707
НемоКэп42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныАлексей КПофиг. Решается форматированием.
Нет, не пофиг. Выше приведен был самый простейший случай, и только одна монада - в реальности их может быть намного больше. Некогда на GotDotNet в блогах была статья про монадический синтатксис. сейчас из-за реорганизации это всё дело куда-то подевалось - там рассматривался такой пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
string postCode;
if (person != null)
{
  if (HasMedicalRecord(person) && person.Address != null)
  {
    CheckAddress(person.Address);
    if (person.Address.PostCode != null)
      postCode = person.Address.PostCode.ToString();
    else
      postCode = "UNKNOWN";
  }
}


и вариант решения с монадами:
Код: c#
1.
2.
3.
4.
5.
6.
string postCode = this.With(x => person)
    .If(x => HasMedicalRecord(x))]
    .With(x => x.Address)
    .Do(x => CheckAddress(x))
    .With(x => x.PostCode)
    .Return(x => x.ToString(), "UNKNOWN");


- и это опять же достаточно искусственный пример, в реальности бывает всё намного хуже. Я считаю, что это прекрасная замена бесконечным стопками if'ов (тот самый вышеупомянутый граф объектов), от которых начинает в глязах рябить.
Что-то у вас ветвлений мало. А как монады работают с кучей ветвлений?

Или даже такая ситуация. Мне сейчас надо сделать большооооой метод расчёта, который будет вызываться итерационно много раз. И в зависимости от условий на каждой итерации (условия тоже рассчитываются-изменяются на каждой итерации) должна выполняться та или другая ветка кода. Я пока сделал кучей if-else. Думаю, на свичи переделать - т. к. может потребоваться дать каждой ветке расчёта осмысленное имя, а я дла этого думаю использовать enum, и в свичи эти enum применять.
...
Рейтинг: 0 / 0
Монады
    #38719711
НемоКэп42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НемоКэп42Что-то у вас ветвлений мало.
В смысле, что дерево какое-то "коридорное" - мало развилок.
...
Рейтинг: 0 / 0
Монады
    #38719725
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НемоКэп42Или даже такая ситуация. Мне сейчас надо сделать большооооой метод расчёта, который будет вызываться итерационно много раз. И в зависимости от условий на каждой итерации (условия тоже рассчитываются-изменяются на каждой итерации) должна выполняться та или другая ветка кода. Я пока сделал кучей if-else. Думаю, на свичи переделать - т. к. может потребоваться дать каждой ветке расчёта осмысленное имя, а я дла этого думаю использовать enum, и в свичи эти enum применять.
Врагу не пожелаешь потом такой код сопровождать.
...
Рейтинг: 0 / 0
Монады
    #38719772
НемоКэп42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВНемоКэп42Или даже такая ситуация. Мне сейчас надо сделать большооооой метод расчёта, который будет вызываться итерационно много раз. И в зависимости от условий на каждой итерации (условия тоже рассчитываются-изменяются на каждой итерации) должна выполняться та или другая ветка кода. Я пока сделал кучей if-else. Думаю, на свичи переделать - т. к. может потребоваться дать каждой ветке расчёта осмысленное имя, а я дла этого думаю использовать enum, и в свичи эти enum применять.
Врагу не пожелаешь потом такой код сопровождать.
А как лучше?
...
Рейтинг: 0 / 0
Монады
    #38719786
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НемоКэп42ЕвгенийВпропущено...

Врагу не пожелаешь потом такой код сопровождать.
А как лучше?Шаблон Strategy (позволяет отказаться от использования переключателей и/или условных операторов).
...
Рейтинг: 0 / 0
Монады
    #38725469
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВПонижается абстракция и количество повторно используемого кода. Пусть больше пашет компилятор и не аммортизируется клава!
зато повышается читабельность кода
...
Рейтинг: 0 / 0
Монады
    #38729705
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такие монады нафиг не нужны в общем случае. И это легко показать:

Д-тим, у нас есть код вида:
Код: c#
1.
2.
3.
4.
5.
int? len;
if (customer != null && customer.ExtraRef != null && customer.ExtraRef.Name != null)
{
  len = customer.ExtraRef.Name.Length;
}


Мы его можем свернуть в более читаемый/менее ошибкоподверженный:
Код: c#
1.
2.
3.
4.
var len = GetCustomer()
  .With(c => c.ExtraRef)
  .With(e => e.Name)
  .With(s => new int?(s.Length));


Да, код стал (относительно)лучше первоначального.

Вопрос:
Почему мы просто не написали и let it crash?
Код: c#
1.
len = customer.ExtraRef.Name.Length;



Резюме: В общем случае такие монады не нужны и let it crash.
...
Рейтинг: 0 / 0
Монады
    #38729712
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticТакие монады нафиг не нужны в общем случае. И это легко показать:

Д-тим, у нас есть код вида:
Код: c#
1.
2.
3.
4.
5.
int? len;
if (customer != null && customer.ExtraRef != null && customer.ExtraRef.Name != null)
{
  len = customer.ExtraRef.Name.Length;
}


Мы его можем свернуть в более читаемый/менее ошибкоподверженный:
Код: c#
1.
2.
3.
4.
var len = GetCustomer()
  .With(c => c.ExtraRef)
  .With(e => e.Name)
  .With(s => new int?(s.Length));


Да, код стал (относительно)лучше первоначального.

Вопрос:
Почему мы просто не написали и let it crash?Глупый вопрос.

Всё зависит от того считается ли отсутствие объекта нормальной или исключительной ситуацией.
И в любом случае "let it crash" - это плохо.
...
Рейтинг: 0 / 0
Монады
    #38729713
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

> И в любом случае "let it crash" - это плохо.
Почему?

Этот код под try/catch, очевидно.
...
Рейтинг: 0 / 0
Монады
    #38729715
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticТакие монады нафиг не нужны в общем случае.
В общем случае весь дотнет нафиг не нужен. Вместе с компьютерами. Нюансы заключаются в частностях.
...
Рейтинг: 0 / 0
Монады
    #38729718
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Как умно, давай тебе поапплодируем.
...
Рейтинг: 0 / 0
Монады
    #38729735
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticКак умно, давай тебе поапплодируем.
Не стоит. Это не более умно, чем распространять использование частного инструмента на общую практику. И уж подавно не более умно предложения let it crash:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
try
{
  len = customer.ExtraRef.Name.Length;
}
catch(NullPointerException)
{
  len = 0;
}


теперь берем ситуацию, когда ExtraRef - свойство с нетривиальной логикой в аксессоре. И эта логика тоже может выбросить NPE. И в случае с монадами, и в случае с if'ами этот возникший NPE будет проброшен вверх по стеку вызова, а в случае с let it crash NPE будет благополучно съеден, и как будто всё в порядке. Тот, кто будет отлаживать такой код, придет, и оборвет автору руки.
...
Рейтинг: 0 / 0
Монады
    #38729754
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticskyANA,

> И в любом случае "let it crash" - это плохо.
Почему?Очень плохо для кармы.

enigmaticЭтот код под try/catch, очевидно.С этого момента по подробнее: что конкретно Вы завернули в try/catch и почему думаете, что это является неким очевидным решением?
...
Рейтинг: 0 / 0
Монады
    #38730072
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

> по сниппету
Используй Application.UnhandledException, а не то что ты написал

>Это не более умно, чем распространять использование частного инструмента на общую практику.
>ExtraRef - свойство с нетривиальной логикой в аксессоре
Свойство с нетривиальной логикой в аксессоре это общая практика, я правильно понял?

> И в случае с монадами
А ты уверен, что это монады? Почему ты в этом уверен?
...
Рейтинг: 0 / 0
Монады
    #38730074
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAenigmaticskyANA,

> И в любом случае "let it crash" - это плохо.
Почему?Очень плохо для кармы.

enigmaticЭтот код под try/catch, очевидно.С этого момента по подробнее: что конкретно Вы завернули в try/catch и почему думаете, что это является неким очевидным решением?

> Очень плохо для кармы.
...
Рейтинг: 0 / 0
Монады
    #38730088
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAenigmaticskyANA,

> И в любом случае "let it crash" - это плохо.
Почему?Очень плохо для кармы.

enigmaticЭтот код под try/catch, очевидно.С этого момента по подробнее: что конкретно Вы завернули в try/catch и почему думаете, что это является неким очевидным решением?

Упс, ctrl+enter отправляет сообщения.

> Очень плохо для кармы.
Это хороший ответ на вопрос "почему?".

> С этого момента по подробнее: что конкретно Вы завернули в try/catch и почему думаете, что это является неким очевидным решением?
Во-первых,
> Всё зависит от того считается ли отсутствие объекта нормальной или исключительной ситуацией.
Не отсутствие объекта, а отсутствие каждого из объектов в цепочке.
По дефолту считается что отсутствие объекта считается исключительной ситуацией.
> что конкретно Вы завернули в try/catch
Всё. Используется Application.UnhandledException.
...
Рейтинг: 0 / 0
Монады
    #38730263
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticskyANAпропущено...
Очень плохо для кармы.

пропущено...
С этого момента по подробнее: что конкретно Вы завернули в try/catch и почему думаете, что это является неким очевидным решением?

Упс, ctrl+enter отправляет сообщения.

> Очень плохо для кармы.
Это хороший ответ на вопрос "почему?".

> С этого момента по подробнее: что конкретно Вы завернули в try/catch и почему думаете, что это является неким очевидным решением?
Во-первых,
> Всё зависит от того считается ли отсутствие объекта нормальной или исключительной ситуацией.
Не отсутствие объекта, а отсутствие каждого из объектов в цепочке.
По дефолту считается что отсутствие объекта считается исключительной ситуацией.
> что конкретно Вы завернули в try/catch
Всё. Используется Application.UnhandledException.Вот.

Теперь можно объяснить почему это плохо для кармы.

Сначала вас проклянут пользователи, так как не будут понимать почему программа говорит какие-то общие слова о том, что не может работать.
Потом вас проклянёт первая линия поддержки, потому как по сообщению ни фига не понятно где конкретно произошла ошибка и что предложить пользователю в качестве временного воркэраунда.
Затем к проклятиям присоединится вторая линия поддержки, потому как логи засираются ни о чём не говорящими "null reference exception"-ами.
И наконец разрабочик, которому придётся переключаться со своей ветки на релизную, чтобы посмотреть, что же в той строке кода может быть null.

Вот как-то так
...
Рейтинг: 0 / 0
Монады
    #38730282
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmatic, ну и очевидно, что Ваша работа с исключениями ни фига не совпадает с общепринятым подходом.
...
Рейтинг: 0 / 0
Монады
    #38730367
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЗатем к проклятиям присоединится вторая линия поддержки, потому как логи засираются ни о чём не говорящими "null reference exception"-ами.Если в лог не пишут stack trace - сами виноваты.
...
Рейтинг: 0 / 0
Монады
    #38730374
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAenigmatic, ну и очевидно, что Ваша работа с исключениями ни фига не совпадает с общепринятым подходом.Глобальный обработчик в Application.UnhandledException гораздо лучше общепринятых подходов, которых нет.
...
Рейтинг: 0 / 0
Монады
    #38730420
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAСначала вас проклянут пользователи, так как не будут понимать почему программа говорит какие-то общие слова о том, что не может работать.
Потом вас проклянёт первая линия поддержки, потому как по сообщению ни фига не понятно где конкретно произошла ошибка и что предложить пользователю в качестве временного воркэраунда.
Затем к проклятиям присоединится вторая линия поддержки, потому как логи засираются ни о чём не говорящими "null reference exception"-ами.
И наконец разрабочик, которому придётся переключаться со своей ветки на релизную, чтобы посмотреть, что же в той строке кода может быть null.

Вот как-то так
Кошмар на улице Вязов просто.

Если ты хочешь проверять на null каждый экземпляр value-типа то флаг в руки.

авторenigmatic, ну и очевидно, что Ваша работа с исключениями ни фига не совпадает с общепринятым подходом.
Ну это всего лишь твое мнение.
...
Рейтинг: 0 / 0
Монады
    #38730431
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticавторenigmatic, ну и очевидно, что Ваша работа с исключениями ни фига не совпадает с общепринятым подходом.
Ну это всего лишь твое мнение.Так блин

Если по логике программы переменная никак не должна оказаться null, тогда это ИСКЛЮЧИТЕЛЬНАЯ ситуация, она не должна была произойти по логике программы, тогда да, исключение, которое может обрабатываться в том числе и на уровне приложения.

Но если null - это возможная ситуация в рамках приложения, значит она НЕ ИСКЛЮЧИТЕЛЬНАЯ, значит делать проверку через ИСКЛЮЧЕНИЕ неверно по определению самого исключения.
...
Рейтинг: 0 / 0
Монады
    #38730444
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmatic> по сниппету
По какому сниппету? Я что-то писал о сниппетах?
enigmaticИспользуй Application.UnhandledException, а не то что ты написал
Ээ? Я писал про отлавливание NPE, который съедается блоком catch. Каким боком тут Application.UnhandledException?

enigmaticСвойство с нетривиальной логикой в аксессоре это общая практика, я правильно понял?
Опустим слово "нетривиальный". Просто логика. Не auto-implemented properties - вполне себе общая практика.
enigmaticА ты уверен, что это монады? Почему ты в этом уверен?
Что - это?
...
Рейтинг: 0 / 0
Монады
    #38730467
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticЕсли ты хочешь проверять на null каждый экземпляр reference -типа то флаг в руки.
Очевидное исправление.
...
Рейтинг: 0 / 0
Монады
    #38730484
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAЗатем к проклятиям присоединится вторая линия поддержки, потому как логи засираются ни о чём не говорящими "null reference exception"-ами.Если в лог не пишут stack trace - сами виноваты.Пишется, но зачастую знание того, что причину исключения надо искать в 41 строке такого-то файла ничем не помогает саппорту.
...
Рейтинг: 0 / 0
Монады
    #38730516
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Если в лог не пишут stack trace - сами виноваты.Пишется, но зачастую знание того, что причину исключения надо искать в 41 строке такого-то файла ничем не помогает саппорту.Ведь эти логи не для саппорта.
...
Рейтинг: 0 / 0
Монады
    #38730557
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAenigmatic, ну и очевидно, что Ваша работа с исключениями ни фига не совпадает с общепринятым подходом.Глобальный обработчик в Application.UnhandledException гораздо лучше общепринятых подходов, которых нет.Что значит лучше? Глобальный обработчик необработанных исключений - это часть подхода

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

Количеество непойми отчего и где возникших исключений сокращается в разы. Работает и в C#, и в Java, и в PHP, и в JavaScript.
...
Рейтинг: 0 / 0
Монады
    #38730563
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticskyANAСначала вас проклянут пользователи, так как не будут понимать почему программа говорит какие-то общие слова о том, что не может работать.
Потом вас проклянёт первая линия поддержки, потому как по сообщению ни фига не понятно где конкретно произошла ошибка и что предложить пользователю в качестве временного воркэраунда.
Затем к проклятиям присоединится вторая линия поддержки, потому как логи засираются ни о чём не говорящими "null reference exception"-ами.
И наконец разрабочик, которому придётся переключаться со своей ветки на релизную, чтобы посмотреть, что же в той строке кода может быть null.

Вот как-то так
Кошмар на улице Вязов просто.

Если ты хочешь проверять на null каждый экземпляр value-типа то флаг в руки.

авторenigmatic, ну и очевидно, что Ваша работа с исключениями ни фига не совпадает с общепринятым подходом.
Ну это всего лишь твое мнение.Ну когда системой ежедневно пользуются полтора миллиона пользователей, то такое разгильдяйство как Ваше приводит нет, не к кошмару, но по крайней мере к тому, что лично Вам вряд-ли будут давать ответсвенные направления, повышать зп, особо ценить.
Одни бужут смеяться над тем, что очередная бага адресована Вам, а другие ругаться.
...
Рейтинг: 0 / 0
Монады
    #38730573
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Пишется, но зачастую знание того, что причину исключения надо искать в 41 строке такого-то файла ничем не помогает саппорту.Ведь эти логи не для саппорта.Ну я выше вроде детально расписал, кто в итоге будет разбираться с логами. При этом его будут пинать, так как саппорт самостоятельно не смог дать пользователю быстрого решения.
...
Рейтинг: 0 / 0
Монады
    #38730840
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Глобальный обработчик в Application.UnhandledException гораздо лучше общепринятых подходов, которых нет.Что значит лучше? Глобальный обработчик необработанных исключений - это часть подхода

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

Количеество непойми отчего и где возникших исключений сокращается в разы. Работает и в C#, и в Java, и в PHP, и в JavaScript.И будем в каждом button_click (WPF, WinForms) или в каждом методе контроллера (Asp.Net) ставить try...catch. Удачи!
...
Рейтинг: 0 / 0
Монады
    #38730895
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Что значит лучше? Глобальный обработчик необработанных исключений - это часть подхода

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

Количеество непойми отчего и где возникших исключений сокращается в разы. Работает и в C#, и в Java, и в PHP, и в JavaScript.И будем в каждом button_click (WPF, WinForms) или в каждом методе контроллера (Asp.Net) ставить try...catch. Удачи!Нет конечно. Я же написал: "если можем обработать исключение". Под можем обработать имеется ввиду, что можем осмысленно обработать в данном месте программы.

Тупо расставить везде try...catch - это не то.
...
Рейтинг: 0 / 0
Монады
    #38730904
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К, ну и Вы упускаете из виду тот момент, что пока программист разбирается с исключением, то пользователи ждут.
И если в корпоративной среде пусть ждут, никуда они не денутся. То пользователи коммерческого ПО могут послать лесом и уйти к конкурентам.

А если сообщение об ошибке более осмысленное и сопровождено более подробной информацией, то саппорт может предложить пользователю быстрое решение, а ишью спокойно приоритезировать, не разводя суеты.
...
Рейтинг: 0 / 0
Монады
    #38730984
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей К, ну и Вы упускаете из виду тот момент, что пока программист разбирается с исключением, то пользователи ждут.
Что за бред?
...
Рейтинг: 0 / 0
Монады
    #38731015
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAАлексей К, ну и Вы упускаете из виду тот момент, что пока программист разбирается с исключением, то пользователи ждут.
Что за бред?Ну давай расскажи, что будет делать пользователь, когда где-то в коде неизвестно отчего падает null reference exception.
...
Рейтинг: 0 / 0
Монады
    #38731022
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
года два назад взял пробник совдеповской срм ( посмотреть что за зверь по просьбе заказчика) и при первом запуске вывалилось nullreferenceexception, тут же мило послал нах..
...
Рейтинг: 0 / 0
Монады
    #38731045
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУпропущено...

Что за бред?Ну давай расскажи, что будет делать пользователь, когда где-то в коде неизвестно отчего падает null reference exception.

расчехлять дебаггер, что же ещё?
...
Рейтинг: 0 / 0
Монады
    #38731046
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиskyANA,
года два назад взял пробник совдеповской срм ( посмотреть что за зверь по просьбе заказчика) и при первом запуске вывалилось nullreferenceexception, тут же мило послал нах..

год назад поступил холодный звонок из города кукуево, впаривают свою срм по все матушке Россие, решил глянуть... отэто я огрёб, хорошо на виртуалке ставил. чувачьё писало свою говно-срм по книжкам 2000-ых, на убогих вебформах образца 2.0... валилось и падало в том чесле с какими-то экцепшенами через раз. похоже только я один в этом мире не понимаю, как они это продают.
...
Рейтинг: 0 / 0
Монады
    #38731050
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУпропущено...
Что за бред?Ну давай расскажи, что будет делать пользователь, когда где-то в коде неизвестно отчего падает null reference exception.
Дебажить на тестовом иди девелоперском стенде, сливать при необходимости БД или часть тестируемых данных с продуктива. Или ты дебажишь продуктив?
...
Рейтинг: 0 / 0
Монады
    #38731053
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Проблема не нова, российский продукт имеет свою специфику равно как и нишу, продаются же рос. авто-ведра с надписями
на ремнях без. - "от родных и близких", хотя по меж. классификации это геноцид.
Чтож Вы хотите, 70 лет выпускали г...о, а тут бац - и конфетка, так не бывает..( хотя есть исключения)
...
Рейтинг: 0 / 0
Монады
    #38731070
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИ будем в каждом button_click (WPF
джошсмит негодует, однако
...
Рейтинг: 0 / 0
Монады
    #38731090
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныАлексей КИ будем в каждом button_click (WPF
джошсмит негодует, однакоГлавное, чтобы Фаулер был доволен.
...
Рейтинг: 0 / 0
Монады
    #38731164
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAпропущено...
Ну давай расскажи, что будет делать пользователь, когда где-то в коде неизвестно отчего падает null reference exception.
Дебажить на тестовом иди девелоперском стенде, сливать при необходимости БД или часть тестируемых данных с продуктива. Или ты дебажишь продуктив? Пользователь будет дебажить на тестовом стенде, я правильно тебя понял?
Что же это за продукт такой и кто его пользователи? Та CRM, о которой Хвост и Где-то в степи пишут?

Они не поняли, что надо было дебажить.
...
Рейтинг: 0 / 0
Монады
    #38731171
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУпропущено...

Дебажить на тестовом иди девелоперском стенде, сливать при необходимости БД или часть тестируемых данных с продуктива. Или ты дебажишь продуктив? Пользователь будет дебажить на тестовом стенде, я правильно тебя понял?
Что же это за продукт такой и кто его пользователи? Та CRM, о которой Хвост и Где-то в степи пишут?

Они не поняли, что надо было дебажить.
Опять дурака включаешь? Дебажит программист. А что будет делать пользователь, я не в курсе. Возможно, будет пить кофе.
...
Рейтинг: 0 / 0
Монады
    #38731277
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAпропущено...
Пользователь будет дебажить на тестовом стенде, я правильно тебя понял?
Что же это за продукт такой и кто его пользователи? Та CRM, о которой Хвост и Где-то в степи пишут?

Они не поняли, что надо было дебажить.
Опять дурака включаешь? Дебажит программист. А что будет делать пользователь, я не в курсе. Возможно, будет пить кофе.Понятно, МСУ опять читал не внимательно, а дураком меня обзывает. МСУ такой МСУ
...
Рейтинг: 0 / 0
Монады
    #38731331
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПонятно, МСУ опять читал не внимательно, а дураком меня обзывает. МСУ такой МСУ

Всё правильно МСУ говорит, нельзя дебажить или разбираться с проблемой на продакшене. Мало того, программист может не иметь доступа к реальным данным, поэтому только на стенде. Если пользователи сталкиваются с тупой ошибкой, это проблема QA, а не программистов. По шапке есть кому давать
...
Рейтинг: 0 / 0
Монады
    #38731344
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAПонятно, МСУ опять читал не внимательно, а дураком меня обзывает. МСУ такой МСУ

Всё правильно МСУ говорит, нельзя дебажить или разбираться с проблемой на продакшене. Мало того, программист может не иметь доступа к реальным данным, поэтому только на стенде. Если пользователи сталкиваются с тупой ошибкой, это проблема QA, а не программистов. По шапке есть кому давать А где я писал про разбирательство с проблемой в продакшене?
...
Рейтинг: 0 / 0
Монады
    #38731352
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ наконец разрабочик, которому придётся переключаться со своей ветки на релизную, чтобы посмотреть, что же в той строке кода может быть null.Типа здесь что-ли?

Тут речь про ветку (branch) в системе контроля версий. И про переключение на неё, чтобы обновить свой локальный репозиторий до того кода, что на продакшене крутится и посмотреть что там в 41-й строке кода может быть null.
...
Рейтинг: 0 / 0
Монады
    #38731372
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Речь о том, что на разбирательство с исключением "Object reference not set to an instance of an object." уйдёт гораздо больше времени, чем на, например: "Customer was not found by the specified criteria" и в Exception.Data перечислены параметры поиска, определённые пользователем.

Саппорт а) сможет понять, есть-ли воркэраунд для пользователя б) увидеть количество конкретно этих исключений в общей массе, когда и при каких условиях они возникают и приоретизировать их.
...
Рейтинг: 0 / 0
Монады
    #38731383
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAРечь о том, что на разбирательство с исключением "Object reference not set to an instance of an object." уйдёт гораздо больше времени, чем на, например: "Customer was not found by the specified criteria" и в Exception.Data перечислены параметры поиска, определённые пользователем.

Саппорт а) сможет понять, есть-ли воркэраунд для пользователя б) увидеть количество конкретно этих исключений в общей массе, когда и при каких условиях они возникают и приоретизировать их.

Почему вообще пользователи должны видеть детали сообщений об ошибках? Можно же запросить/отправить отчёт со всеми выкладками и стектрейсом на почту разработчикам, обычно такие непонятные сообщения до усрачки пугают некоторых пользователей.
...
Рейтинг: 0 / 0
Монады
    #38731387
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAРечь о том, что на разбирательство с исключением "Object reference not set to an instance of an object." уйдёт гораздо больше времени, чем на, например: "Customer was not found by the specified criteria" и в Exception.Data перечислены параметры поиска, определённые пользователем.

Саппорт а) сможет понять, есть-ли воркэраунд для пользователя б) увидеть количество конкретно этих исключений в общей массе, когда и при каких условиях они возникают и приоретизировать их.

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

Пользователи видят какие-то общие слова типа "Извините, попробуйте повторить попытку позже": 16500568 .
...
Рейтинг: 0 / 0
Монады
    #38731394
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПользователи видят какие-то общие слова типа "Извините, попробуйте повторить попытку позже": 16500568 .Это когда у нас один глобальный обработчик исключений.

Когда же обработка исключительных ситуаций реализовано более грамотным способом, то система ведёт себя более интеллектуально и дружелюбно по отношению к пользователю и к саппорту
...
Рейтинг: 0 / 0
Монады
    #38731442
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
нету тут критерия разработки в контексте рашендевелопинга, это все зависит от культуры производства и методологии,
и рассматривать все это надо в комплексе, а это и поддержка и подробные хелпы с примерами, доскональное тестирование, и внятное объяснение проблем со стороны программы, конечно что то меняется но исходя их эмпирики х.. че изменится.
Вспоминаю один случай, одинцешник скачал конвертатор от федералов и до обеда бился над ним, на все вопросы в чем дело
че валится Новосибирский саппорт ( родитель этого чуда) вежливо отвечал голосом какой то бляди и перманентно советовал скачать по новой и переустановить..
...
Рейтинг: 0 / 0
Монады
    #38731445
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУпропущено...

Опять дурака включаешь? Дебажит программист. А что будет делать пользователь, я не в курсе. Возможно, будет пить кофе.Понятно, МСУ опять читал не внимательно, а дураком меня обзывает. МСУ такой МСУ
Ты реально в вакууме... Еще раз. Ты спросил

skyANAто будет делать пользователь, когда где-то в коде неизвестно отчего падает

Я ответил не на этот конкретный вопрос. А я ответил, что нужно делать. Вообще делать.

МСУДебажить на тестовом иди девелоперском стенде, сливать при необходимости БД или часть тестируемых данных с продуктива.

Что было не понятно из сказанного? Но ты опять дое..ся до слов, прикинулся дурачком и задал вопрос про то, что пользователь будет дебажить код. Ну что за бред-то?
...
Рейтинг: 0 / 0
Монады
    #38731457
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAпропущено...
Понятно, МСУ опять читал не внимательно, а дураком меня обзывает. МСУ такой МСУ
Ты реально в вакууме... Еще раз. Ты спросил

skyANAто будет делать пользователь, когда где-то в коде неизвестно отчего падает

Я ответил не на этот конкретный вопрос. А я ответил, что нужно делать. Вообще делать.Спасибо, кэп, но речь не про это.
Остальное поскипал, так как это развитие мысли в другую сторону.
...
Рейтинг: 0 / 0
Монады
    #38731466
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиskyANA,
нету тут критерия разработки в контексте рашендевелопинга, это все зависит от культуры производства и методологии,
и рассматривать все это надо в комплексе, а это и поддержка и подробные хелпы с примерами, доскональное тестирование, и внятное объяснение проблем со стороны программы, конечно что то меняется но исходя их эмпирики х.. че изменится.Ну судя по реакции публики, многие кладут болт на то, что ты назвал "культуры производства и методологии", и считают это очевидной нормой.
Не все конечно, но многие.
...
Рейтинг: 0 / 0
Монады
    #38731534
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
ну а смысл тогда вступать в бесполезную дискуссию, все что тут происходит - софистика.
Тем более спорить о вкусе ананаса с человеком который никогда его не ел ))
...
Рейтинг: 0 / 0
Монады
    #38731555
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи, а какие конкретно выссказывания являются на твой взгляд софизмами?
...
Рейтинг: 0 / 0
Монады
    #38731561
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПользователи видят какие-то общие слова типа "Извините, попробуйте повторить попытку позже": 16500568 .

Прошу понять и простить
...
Рейтинг: 0 / 0
Монады
    #38731618
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAСпасибо, кэп, но речь не про это.
В общем, мысль такая. Глобальная обработка должна быть железобетонно. Небольшие отдельные затычки для более внятной формулировки исключения, в принципе, тоже не возбраняются. Но только без фанатизма.
...
Рейтинг: 0 / 0
Монады
    #38731627
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAГде-то в степи, а какие конкретно выссказывания являются на твой взгляд софизмами?
в том то и дело, что в софистике любое высказывание выдранное из контекста и не только, верно и логично,( если бы это было не верно - мы бы не говорили о софистике как искусстве спора) Надо смотреть конечный результат и предмет дискуссии.
Сахар - черный, без сомнения аргументы всех сторон ( если учесть что стороны имеют виртуозность в этом предмете) будут true
Или вот МСУ, имхо виртуозно владеет этим направлением ( если отбросить агрессивность и профанацию), он безболезненно может
убедить и доказать что земля плоская или круглая ( в зависимости с какого конца произошел вброс) это искусство, оттачивается годами ))
...
Рейтинг: 0 / 0
Монады
    #38731642
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAСпасибо, кэп, но речь не про это.
В общем, мысль такая. Глобальная обработка должна быть железобетонно.Спасибо, кэп, ещё раз.
МСУНебольшие отдельные затычки для более внятной формулировки исключения, в принципе, тоже не возбраняются. Но только без фанатизма.Спасибо, кэп, три раза, но затычки вообще не нужны.
...
Рейтинг: 0 / 0
Монады
    #38731654
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЭто тебе не унылый хохлосрач в А51, тут всё гораздо жёстче!
...
Рейтинг: 0 / 0
Монады
    #38731669
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAЭто тебе не унылый хохлосрач в А51, тут всё гораздо жёстче! Что-то я жёсткости пока не увидел, если честно :)
...
Рейтинг: 0 / 0
Монады
    #38731786
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВ общем, мысль такая. Глобальная обработка должна быть железобетонно.Спасибо, кэп, ещё раз.[/quot]
На здоровье.

skyANAМСУНебольшие отдельные затычки для более внятной формулировки исключения, в принципе, тоже не возбраняются. Но только без фанатизма.Спасибо, кэп, три раза, но затычки вообще не нужны.
Так ты сам предлагал эти затычки. Теперь не нужны? Тогда снимаю шляпу.
...
Рейтинг: 0 / 0
Монады
    #38731806
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТак ты сам предлагал эти затычки. Теперь не нужны?Нет, не нужны и я их не предлагал.
...
Рейтинг: 0 / 0
Монады
    #38731864
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем спор? Где ошибки ловить? Конечно там где знаем как их обработать.
Или я выпал из дискуссии? )
...
Рейтинг: 0 / 0
Монады
    #38731873
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.А в чем спор? Где ошибки ловить? Конечно там где знаем как их обработать.
Или я выпал из дискуссии? )Да нет, не выпал. Пришли к тому, что "там где знаем как их обработать" - это оказывается затычка, а ни фига не общепринятый подход
...
Рейтинг: 0 / 0
Монады
    #38731897
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУТак ты сам предлагал эти затычки. Теперь не нужны?Нет, не нужны и я их не предлагал.
Ложь. Снова ложь. 16503383

skyANAАлексей КИ будем в каждом button_click (WPF, WinForms) или в каждом методе контроллера (Asp.Net) ставить try...catch. Удачи!Нет конечно. Я же написал: "если можем обработать исключение". Под можем обработать имеется ввиду, что можем осмысленно обработать в данном месте программы.
...
Рейтинг: 0 / 0
Монады
    #38731931
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAпропущено...
Нет, не нужны и я их не предлагал.
Ложь. Снова ложь. 16503383

skyANAпропущено...
Нет конечно. Я же написал: "если можем обработать исключение". Под можем обработать имеется ввиду, что можем осмысленно обработать в данном месте программы.МСУ, хватит троллить.

Русским же языком написано: если можем осмысленно обработать в данном месте программы.
Как это коррелирует с твоими "затычками" и "фанатизмом"?
...
Рейтинг: 0 / 0
Монады
    #38732028
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУ, хватит троллить.
Даже и не думал этого делать.

skyANAРусским же языком написано: если можем осмысленно обработать в данном месте программы.
Как это коррелирует с твоими "затычками" и "фанатизмом"?
А у меня не тоже самое сказано в этом посте? 16506983
...
Рейтинг: 0 / 0
Монады
    #38732051
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сюр
...
Рейтинг: 0 / 0
Монады
    #38732397
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, что никто про контракты не вспомнил. Их что, никто не юзает?
...
Рейтинг: 0 / 0
Монады
    #38732479
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79, речь о System.Diagnostics.Contracts? Мы юзаем.
...
Рейтинг: 0 / 0
Монады
    #38732518
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAArm79, речь о System.Diagnostics.Contracts? Мы юзаем.
Это к тому, что null или не null может прийти. Если заложить в контракт соответствующее требование - проблема с null должна решиться?

Естественно, на глобальный обработчик исключений нужно навесить обработку с сохранением полного stacktrace

А делать try-catch или нет - дело вкуса. Я встречал оба подхода в разработке - пытаться предусмотреть все варианты exception и реагировать на них, и наоборот - ожидать только успешного завершения, а в случае ошибки перезапускать обработку (количество попыток и таймауты задаются).

Не могу однозначно отдать предпочтение тому или иному подходу - использую оба :-)
...
Рейтинг: 0 / 0
136 сообщений из 136, показаны все 6 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Монады
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]