|
Монады
|
|||
---|---|---|---|
#18+
Кто-нибудь всерьёз использует свои велосипедные монады в C#? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 01:52 |
|
Монады
|
|||
---|---|---|---|
#18+
Разумеется. Пока еще для Roslyn допилят свой null propagating , и когда еще это доберется до наших реалий. Для меня лично предпочтительнее написать: Код: c# 1. 2. 3. 4.
чем писать лесенку вида Код: c# 1. 2. 3.
учитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее. Хотя, конечно, обещаемое в Roslyn смотрится изящнее: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 06:30 |
|
Монады
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Не думаю, что null propagating полностью отменит необходимости своих костылей, так как в With можно задать любое выражение, а n/p работает только со свойствами. Ещё меня интересует Maybe/Nullable вместо утомительного написания контрактов и проверок для null checking. Вот бы ещё ввели оператор, типа SomeMethod(SomeType !argument), эх... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 06:58 |
|
Монады
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныРазумеется. Пока еще для Roslyn допилят свой null propagating , и когда еще это доберется до наших реалий. Для меня лично предпочтительнее написать: Код: c# 1. 2. 3. 4.
чем писать лесенку вида Код: c# 1. 2. 3.
Не проще нормально отформатировать? Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Сон Веры Павловныучитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее.Пофиг. Решается форматированием. Сон Веры ПавловныХотя, конечно, обещаемое в Roslyn смотрится изящнее: Код: c# 1.
Нах не нужно... зы: Извращенцы... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 07:38 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КНе проще нормально отформатировать? фу-фу-фу. монады гораздо читабельней и безопасней. очень часто приходится работать с графом объектов, и эти проверки не доставляют ни на этапе разработки, ни на этапе сопровождения. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 07:51 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КПофиг. Решается форматированием. Нет, не пофиг. Выше приведен был самый простейший случай, и только одна монада - в реальности их может быть намного больше. Некогда на GotDotNet в блогах была статья про монадический синтатксис. сейчас из-за реорганизации это всё дело куда-то подевалось - там рассматривался такой пример: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
и вариант решения с монадами: Код: c# 1. 2. 3. 4. 5. 6.
- и это опять же достаточно искусственный пример, в реальности бывает всё намного хуже. Я считаю, что это прекрасная замена бесконечным стопками if'ов (тот самый вышеупомянутый граф объектов), от которых начинает в глязах рябить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:12 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttКто-нибудь всерьёз использует свои велосипедные монады в C#?Использую, работают. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:15 |
|
Монады
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныАлексей КПофиг. Решается форматированием. Нет, не пофиг. Выше приведен был самый простейший случай, и только одна монада - в реальности их может быть намного больше. Некогда на GotDotNet в блогах была статья про монадический синтатксис. сейчас из-за реорганизации это всё дело куда-то подевалось - там рассматривался такой пример: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
и вариант решения с монадами: Код: c# 1. 2. 3. 4. 5. 6.
Выделение метода? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Сон Веры Павловныи это опять же достаточно искусственный пример, в реальности бывает всё намного хуже. Я считаю, что это прекрасная замена бесконечным стопками if'ов (тот самый вышеупомянутый граф объектов), от которых начинает в глязах рябитьКаждый сложный пример всегда можно разбить на множество простых. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:33 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей ККаждый сложный пример всегда можно разбить на множество простых. Монады это как раз и делают, только универсально. Задача обхода графов объектов вполне типичная, и повторяется множество раз. Вполне логично запилить универсальное решение по принципу less is more . Тоже самое можно сказать и об LINQ и лямбдах -- зачем они нужны, если есть циклы и всегда можно разбить метод на кучку мелких методов. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:41 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAИспользую, работают. Maybe тоже используешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:43 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttАлексей ККаждый сложный пример всегда можно разбить на множество простых. Монады это как раз и делают, только универсально. Задача обхода графов объектов вполне типичная, и повторяется множество раз.Эта задача успешно решается родными средствами языка. hVosttВполне логично запилить универсальное решение по принципу less is more .На любителя. hVosttТоже самое можно сказать и об LINQ и лямбдах -- зачем они нужны, если есть циклы и всегда можно разбить метод на кучку мелких методов.Там экономится много строк кода. Тут экономии не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:45 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КЭта задача успешно решается родными средствами языка. Ну так кастомная реализация монад -- это и есть решение родными средствами языка. Используются методы расширения, функторы и деревья выражений. Монадический синтаксис более выразителен и лаконичен вместо лесенки условий или выделения методов. У разбиения метода на более мелкие методы тоже есть придел, и когда-то может встать поперёк горла одни и те же действия, без которых можно вполне обойтись. Алексей КТам экономится много строк кода. Тут экономии не вижу. Экономия и выразительность намерений (что даже гораздо важнее) более чем очевидны. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:51 |
|
Монады
|
|||
---|---|---|---|
#18+
Вопрос всплыл после прочтения статьи Контракты vs. Монады? , и мне стало интересно, кто-нибудь пробовал внедрить монады для борьбы с нулевыми ссылками, или обходимся контрактами и чеками в каждом методе? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:53 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttАлексей КЭта задача успешно решается родными средствами языка. Ну так кастомная реализация монад -- это и есть решение родными средствами языка. Используются методы расширения, функторы и деревья выражений .System.LINQ.Expression? И компилируются поди налету? Видимо, торопиться некуда. hVosttМонадический синтаксис более выразителен и лаконичен вместо лесенки условий или выделения методов.В данном случае - нет. hVosttУ разбиения метода на более мелкие методы тоже есть приделМожно обойтись и без выделения метода. Никто не заставляет. hVostt, и когда-то может встать поперёк горла одни и те же действия, без которых можно вполне обойтись.Описывать на каждый чих лямбду удовольствие тоже не из приятных. hVosttАлексей КТам экономится много строк кода. Тут экономии не вижу. Экономия и выразительность намерений (что даже гораздо важнее) более чем очевидны.Субъективно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:01 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КhVosttМонадический синтаксис более выразителен и лаконичен вместо лесенки условий или выделения методов.В данном случае - нет. Трудно спорить с учётом того, что никакого конкретного (данного) случая не обсуждается. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:11 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttАлексей Кпропущено... В данном случае - нет. Трудно спорить ...Я не спорю, я делюсь впечатлениями. :-) hVostt... с учётом того, что никакого конкретного (данного) случая не обсуждается.Выше был приведён неубедительный для меня пример. Предложите другой. зы: Код: c# 1.
На счёт этого я погорячился. Поддержка этого на уровне языка будет полезна. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:16 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttskyANAИспользую, работают. Maybe тоже используешь?Конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:30 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КВыше был приведён неубедительный для меня пример. Предложите другой. Ну так экстраполируйте :) Представьте граф из 10 вложенных объектов. В чём великий смысл описывать одно и тоже два раза? Это же типичная задача. Сначала проверять, затем извлекать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:31 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAhVosttпропущено... Maybe тоже используешь?Конечно. О, круто! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:31 |
|
Монады
|
|||
---|---|---|---|
#18+
Думаю, если разрешить в команде более чем из 3-х человек каждому форматировать код так, как он считает "нормально", то через полгода осознание того, что лучше бы использовали монады, само придёт ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:36 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttАлексей КВыше был приведён неубедительный для меня пример. Предложите другой. Ну так экстраполируйте :)Экстраполировал, ужаснулся. :-) hVosttПредставьте граф из 10 вложенных объектов. В чём великий смысл описывать одно и тоже два раза? Это же типичная задача. Сначала проверять, затем извлекать.Повторюсь. Не вижу смысла использовать лямбды там, где без них можно обойтись. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:40 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAДумаю, если разрешить в команде более чем из 3-х человек каждому форматировать код так, как он считает "нормально", то через полгода осознание того, что лучше бы использовали монады, само придёт Административные способы воздействия более эффективны. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:52 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КНе вижу смысла использовать лямбды там, где без них можно обойтись. так везде можно.... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 10:12 |
|
Монады
|
|||
---|---|---|---|
#18+
ИзопропилАлексей КНе вижу смысла использовать лямбды там, где без них можно обойтись. так везде можно....Но не везде нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 10:18 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КskyANAДумаю, если разрешить в команде более чем из 3-х человек каждому форматировать код так, как он считает "нормально", то через полгода осознание того, что лучше бы использовали монады, само придёт Административные способы воздействия более эффективны.Зачем было предлагать то, что уже запрещено административными способами? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 11:37 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей К, а есть реальный пример применения административных спосбов? Сколько человек в команде? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 11:38 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAАлексей К, а есть реальный пример применения административных спосбов?Представить стенограмму производственного совещания? Ничего особенного. Всё как у всех. skyANAСколько человек в команде?7 программистов. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 11:59 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... Административные способы воздействия более эффективны.Зачем было предлагать то, что уже запрещено административными способами? Применение монад, само по себе, вряд ли повысит культуру оформления кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 12:01 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КПрименение монад, само по себе, вряд ли повысит культуру оформления кода. А кто называет их серебряной пилюлей? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 12:37 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttАлексей КПрименение монад, само по себе, вряд ли повысит культуру оформления кода. А кто называет их серебряной пилюлей? 16404644 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 12:46 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... 16404644 Кривая у Вас логика Логика не может быть кривой. Логика или есть, или её нет. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 13:04 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КskyANAАлексей К, а есть реальный пример применения административных спосбов?Представить стенограмму производственного совещания? Ничего особенного. Всё как у всех.А у нас StyleCop и никакое производственные совещания не нужно. А на какую тему совещание-то было? "Ёб! Кто так код форматирует?!" ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 13:04 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAА на какую тему совещание-то было? "Ёб! Кто так код форматирует?!" Типа того. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 13:06 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КskyANAпропущено... Кривая у Вас логика Логика не может быть кривой. Логика или есть, или её нет. :-)Что, вышку не заканчивали? Не помним что такое секвенция? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 13:06 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAА у нас StyleCop и никакое производственные совещания не нужно.Ок. Подумаю об этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 13:07 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... Логика не может быть кривой. Логика или есть, или её нет. :-)Что, вышку не заканчивали? Не помним что такое секвенция? Давно это было... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 13:11 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КskyANAпропущено... Кривая у Вас логика Логика не может быть кривой. Логика или есть, или её нет. :-) бывет ещё женская логика ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 13:16 |
|
Монады
|
|||
---|---|---|---|
#18+
ИзопропилАлексей Кпропущено... Логика не может быть кривой. Логика или есть, или её нет. :-) бывет ещё женская логика Д.В. Беклемишев Заметки о женской логике. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 13:26 |
|
Монады
|
|||
---|---|---|---|
#18+
Нет синих букв, зато есть русские :) Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 15:06 |
|
Монады
|
|||
---|---|---|---|
#18+
ЕвгенийВ, а что такое NotNull для структур? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 15:47 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANA, Код: c# 1. 2. 3. 4. 5. 6. 7.
Для дат, там в исходных данных так было, 01.01.0001 = null(хз) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 15:57 |
|
Монады
|
|||
---|---|---|---|
#18+
Хм, и зачем тогда два метода: NotNullActionClass и NotNullActionStruct? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 16:14 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANA, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 16:20 |
|
Монады
|
|||
---|---|---|---|
#18+
ЕвгенийВhVostt, почему? ядрёное смешивание языков ) понимаю ещё 1С там всё по-русски (ну почти). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 16:55 |
|
Монады
|
|||
---|---|---|---|
#18+
ЕвгенийВskyANA, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
И? Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 17:09 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttЕвгенийВhVostt, почему? ядрёное смешивание языков ) понимаю ещё 1С там всё по-русски (ну почти). Это импорт из единого государственного реестра индивидуальных предпринимателей. Там xml приходит с тегами с кириллицей и есть схема. Быстрее сгенерировать классы и десериализовать стандартными средствами, чем переименовывать такую фигню, как Код: xml 1. 2.
не известно во что. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 17:37 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANA, obj!=null быстрее чем Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
:) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 17:40 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttядрёное смешивание языков ) понимаю ещё 1С там всё по-русски (ну почти). Опять ты, Хвост, лезешь туда, в чем не разбираешься... Бить тебя надо по рукам :) http://smev.gosuslugi.ru/portal/api/files/registryfile/2699/Руководство пользователя электронного сервиса СМЭВ.doc] http://smev.gosuslugi.ru/portal/api/files/registryfile/2699/Руководство пользователя электронного сервиса СМЭВ.doc ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 17:42 |
|
Монады
|
|||
---|---|---|---|
#18+
МСУhVosttядрёное смешивание языков ) понимаю ещё 1С там всё по-русски (ну почти). Опять ты, Хвост, лезешь туда, в чем не разбираешься... Бить тебя надо по рукам :) http://smev.gosuslugi.ru/portal/api/files/registryfile/2699/Руководство пользователя электронного сервиса СМЭВ.doc] http://smev.gosuslugi.ru/portal/api/files/registryfile/2699/Руководство пользователя электронного сервиса СМЭВ.doc апять ты со своей кодагенирацией? ну ладна-ладна... убедил чертяка красноричивый ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 18:47 |
|
Монады
|
|||
---|---|---|---|
#18+
ЕвгенийВЭто импорт из единого государственного реестра индивидуальных предпринимателей. Там xml приходит с тегами с кириллицей и есть схема. Быстрее сгенерировать классы и десериализовать стандартными средствами, чем переименовывать такую фигню, как да эт понятно. просто меня всегда убивает эти русские ДатаНачДейств а ещё наименование полей в системах с ограничением на 8 симоволов, типа COD_ANAL ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 18:49 |
|
Монады
|
|||
---|---|---|---|
#18+
Сон Веры Павловныучитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее пофик, решается доп свойством с понятным именем, типа Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 19:07 |
|
Монады
|
|||
---|---|---|---|
#18+
17-77Сон Веры Павловныучитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее пофик, решается доп свойством с понятным именем, типа Код: c# 1. 2. 3. 4.
Понижается абстракция и количество повторно используемого кода. Пусть больше пашет компилятор и не аммортизируется клава! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 23:59 |
|
Монады
|
|||
---|---|---|---|
#18+
?. вещь, не ввели еще? вроде не компилится сразу 13 ошибок выдало ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2014, 14:41 |
|
Монады
|
|||
---|---|---|---|
#18+
FatherSql?. вещь, не ввели еще? вроде не компилится сразу 13 ошибок выдало Нэт. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2014, 14:46 |
|
Монады
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныРазумеется. Пока еще для Roslyn допилят свой null propagating , и когда еще это доберется до наших реалий. Для меня лично предпочтительнее написать: Код: c# 1. 2. 3. 4.
чем писать лесенку вида Код: c# 1. 2. 3.
учитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее. Хотя, конечно, обещаемое в Roslyn смотрится изящнее: Код: c# 1.
вис это для рослина? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2014, 14:48 |
|
Монады
|
|||
---|---|---|---|
#18+
FatherSqlСон Веры ПавловныРазумеется. Пока еще для Roslyn допилят свой null propagating , и когда еще это доберется до наших реалий. Для меня лично предпочтительнее написать: Код: c# 1. 2. 3. 4.
чем писать лесенку вида Код: c# 1. 2. 3.
учитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее. Хотя, конечно, обещаемое в Roslyn смотрится изящнее: Код: c# 1.
вис это для рослина?Нет, это просто extension method. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2014, 14:50 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAFatherSqlпропущено... вис это для рослина?Нет, это просто extension method. свой чтоли ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2014, 15:03 |
|
Монады
|
|||
---|---|---|---|
#18+
FatherSqlskyANAпропущено... Нет, это просто extension method. свой чтолиДа. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2014, 15:19 |
|
Монады
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныРазумеется. Пока еще для Roslyn допилят свой null propagating , и когда еще это доберется до наших реалий. Для меня лично предпочтительнее написать: Код: c# 1. 2. 3. 4.
чем писать лесенку вида Код: c# 1. 2. 3.
учитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее. Хотя, конечно, обещаемое в Roslyn смотрится изящнее: Код: c# 1.
Я так делаю Код: c# 1. 2. 3. 4.
И короче, и не менее понятно. И вообще, когда много параметров у метода или условий проверки во всяких ифах - в столбик пишу. А монады - это же каждый раз метод вызывать. Напрасная растрата ресурсов. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2014, 17:50 |
|
Монады
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныАлексей КПофиг. Решается форматированием. Нет, не пофиг. Выше приведен был самый простейший случай, и только одна монада - в реальности их может быть намного больше. Некогда на GotDotNet в блогах была статья про монадический синтатксис. сейчас из-за реорганизации это всё дело куда-то подевалось - там рассматривался такой пример: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
и вариант решения с монадами: Код: c# 1. 2. 3. 4. 5. 6.
- и это опять же достаточно искусственный пример, в реальности бывает всё намного хуже. Я считаю, что это прекрасная замена бесконечным стопками if'ов (тот самый вышеупомянутый граф объектов), от которых начинает в глязах рябить. Что-то у вас ветвлений мало. А как монады работают с кучей ветвлений? Или даже такая ситуация. Мне сейчас надо сделать большооооой метод расчёта, который будет вызываться итерационно много раз. И в зависимости от условий на каждой итерации (условия тоже рассчитываются-изменяются на каждой итерации) должна выполняться та или другая ветка кода. Я пока сделал кучей if-else. Думаю, на свичи переделать - т. к. может потребоваться дать каждой ветке расчёта осмысленное имя, а я дла этого думаю использовать enum, и в свичи эти enum применять. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2014, 17:57 |
|
Монады
|
|||
---|---|---|---|
#18+
НемоКэп42Что-то у вас ветвлений мало. В смысле, что дерево какое-то "коридорное" - мало развилок. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2014, 17:59 |
|
Монады
|
|||
---|---|---|---|
#18+
НемоКэп42Или даже такая ситуация. Мне сейчас надо сделать большооооой метод расчёта, который будет вызываться итерационно много раз. И в зависимости от условий на каждой итерации (условия тоже рассчитываются-изменяются на каждой итерации) должна выполняться та или другая ветка кода. Я пока сделал кучей if-else. Думаю, на свичи переделать - т. к. может потребоваться дать каждой ветке расчёта осмысленное имя, а я дла этого думаю использовать enum, и в свичи эти enum применять. Врагу не пожелаешь потом такой код сопровождать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2014, 18:09 |
|
Монады
|
|||
---|---|---|---|
#18+
ЕвгенийВНемоКэп42Или даже такая ситуация. Мне сейчас надо сделать большооооой метод расчёта, который будет вызываться итерационно много раз. И в зависимости от условий на каждой итерации (условия тоже рассчитываются-изменяются на каждой итерации) должна выполняться та или другая ветка кода. Я пока сделал кучей if-else. Думаю, на свичи переделать - т. к. может потребоваться дать каждой ветке расчёта осмысленное имя, а я дла этого думаю использовать enum, и в свичи эти enum применять. Врагу не пожелаешь потом такой код сопровождать. А как лучше? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2014, 19:07 |
|
Монады
|
|||
---|---|---|---|
#18+
НемоКэп42ЕвгенийВпропущено... Врагу не пожелаешь потом такой код сопровождать. А как лучше?Шаблон Strategy (позволяет отказаться от использования переключателей и/или условных операторов). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2014, 19:30 |
|
Монады
|
|||
---|---|---|---|
#18+
ЕвгенийВПонижается абстракция и количество повторно используемого кода. Пусть больше пашет компилятор и не аммортизируется клава! зато повышается читабельность кода ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 12:40 |
|
Монады
|
|||
---|---|---|---|
#18+
Такие монады нафиг не нужны в общем случае. И это легко показать: Д-тим, у нас есть код вида: Код: c# 1. 2. 3. 4. 5.
Мы его можем свернуть в более читаемый/менее ошибкоподверженный: Код: c# 1. 2. 3. 4.
Да, код стал (относительно)лучше первоначального. Вопрос: Почему мы просто не написали и let it crash? Код: c# 1.
Резюме: В общем случае такие монады не нужны и let it crash. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 08:06 |
|
Монады
|
|||
---|---|---|---|
#18+
enigmaticТакие монады нафиг не нужны в общем случае. И это легко показать: Д-тим, у нас есть код вида: Код: c# 1. 2. 3. 4. 5.
Мы его можем свернуть в более читаемый/менее ошибкоподверженный: Код: c# 1. 2. 3. 4.
Да, код стал (относительно)лучше первоначального. Вопрос: Почему мы просто не написали и let it crash?Глупый вопрос. Всё зависит от того считается ли отсутствие объекта нормальной или исключительной ситуацией. И в любом случае "let it crash" - это плохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 08:21 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANA, > И в любом случае "let it crash" - это плохо. Почему? Этот код под try/catch, очевидно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 08:25 |
|
Монады
|
|||
---|---|---|---|
#18+
enigmaticТакие монады нафиг не нужны в общем случае. В общем случае весь дотнет нафиг не нужен. Вместе с компьютерами. Нюансы заключаются в частностях. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 08:42 |
|
Монады
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Как умно, давай тебе поапплодируем. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 08:46 |
|
Монады
|
|||
---|---|---|---|
#18+
enigmaticКак умно, давай тебе поапплодируем. Не стоит. Это не более умно, чем распространять использование частного инструмента на общую практику. И уж подавно не более умно предложения let it crash: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
теперь берем ситуацию, когда ExtraRef - свойство с нетривиальной логикой в аксессоре. И эта логика тоже может выбросить NPE. И в случае с монадами, и в случае с if'ами этот возникший NPE будет проброшен вверх по стеку вызова, а в случае с let it crash NPE будет благополучно съеден, и как будто всё в порядке. Тот, кто будет отлаживать такой код, придет, и оборвет автору руки. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 09:17 |
|
Монады
|
|||
---|---|---|---|
#18+
enigmaticskyANA, > И в любом случае "let it crash" - это плохо. Почему?Очень плохо для кармы. enigmaticЭтот код под try/catch, очевидно.С этого момента по подробнее: что конкретно Вы завернули в try/catch и почему думаете, что это является неким очевидным решением? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 09:42 |
|
Монады
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, > по сниппету Используй Application.UnhandledException, а не то что ты написал >Это не более умно, чем распространять использование частного инструмента на общую практику. >ExtraRef - свойство с нетривиальной логикой в аксессоре Свойство с нетривиальной логикой в аксессоре это общая практика, я правильно понял? > И в случае с монадами А ты уверен, что это монады? Почему ты в этом уверен? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 12:35 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAenigmaticskyANA, > И в любом случае "let it crash" - это плохо. Почему?Очень плохо для кармы. enigmaticЭтот код под try/catch, очевидно.С этого момента по подробнее: что конкретно Вы завернули в try/catch и почему думаете, что это является неким очевидным решением? > Очень плохо для кармы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 12:35 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAenigmaticskyANA, > И в любом случае "let it crash" - это плохо. Почему?Очень плохо для кармы. enigmaticЭтот код под try/catch, очевидно.С этого момента по подробнее: что конкретно Вы завернули в try/catch и почему думаете, что это является неким очевидным решением? Упс, ctrl+enter отправляет сообщения. > Очень плохо для кармы. Это хороший ответ на вопрос "почему?". > С этого момента по подробнее: что конкретно Вы завернули в try/catch и почему думаете, что это является неким очевидным решением? Во-первых, > Всё зависит от того считается ли отсутствие объекта нормальной или исключительной ситуацией. Не отсутствие объекта, а отсутствие каждого из объектов в цепочке. По дефолту считается что отсутствие объекта считается исключительной ситуацией. > что конкретно Вы завернули в try/catch Всё. Используется Application.UnhandledException. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 12:41 |
|
Монады
|
|||
---|---|---|---|
#18+
enigmaticskyANAпропущено... Очень плохо для кармы. пропущено... С этого момента по подробнее: что конкретно Вы завернули в try/catch и почему думаете, что это является неким очевидным решением? Упс, ctrl+enter отправляет сообщения. > Очень плохо для кармы. Это хороший ответ на вопрос "почему?". > С этого момента по подробнее: что конкретно Вы завернули в try/catch и почему думаете, что это является неким очевидным решением? Во-первых, > Всё зависит от того считается ли отсутствие объекта нормальной или исключительной ситуацией. Не отсутствие объекта, а отсутствие каждого из объектов в цепочке. По дефолту считается что отсутствие объекта считается исключительной ситуацией. > что конкретно Вы завернули в try/catch Всё. Используется Application.UnhandledException.Вот. Теперь можно объяснить почему это плохо для кармы. Сначала вас проклянут пользователи, так как не будут понимать почему программа говорит какие-то общие слова о том, что не может работать. Потом вас проклянёт первая линия поддержки, потому как по сообщению ни фига не понятно где конкретно произошла ошибка и что предложить пользователю в качестве временного воркэраунда. Затем к проклятиям присоединится вторая линия поддержки, потому как логи засираются ни о чём не говорящими "null reference exception"-ами. И наконец разрабочик, которому придётся переключаться со своей ветки на релизную, чтобы посмотреть, что же в той строке кода может быть null. Вот как-то так ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 13:55 |
|
Монады
|
|||
---|---|---|---|
#18+
enigmatic, ну и очевидно, что Ваша работа с исключениями ни фига не совпадает с общепринятым подходом. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 14:01 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAЗатем к проклятиям присоединится вторая линия поддержки, потому как логи засираются ни о чём не говорящими "null reference exception"-ами.Если в лог не пишут stack trace - сами виноваты. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 14:35 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAenigmatic, ну и очевидно, что Ваша работа с исключениями ни фига не совпадает с общепринятым подходом.Глобальный обработчик в Application.UnhandledException гораздо лучше общепринятых подходов, которых нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 14:37 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAСначала вас проклянут пользователи, так как не будут понимать почему программа говорит какие-то общие слова о том, что не может работать. Потом вас проклянёт первая линия поддержки, потому как по сообщению ни фига не понятно где конкретно произошла ошибка и что предложить пользователю в качестве временного воркэраунда. Затем к проклятиям присоединится вторая линия поддержки, потому как логи засираются ни о чём не говорящими "null reference exception"-ами. И наконец разрабочик, которому придётся переключаться со своей ветки на релизную, чтобы посмотреть, что же в той строке кода может быть null. Вот как-то так Кошмар на улице Вязов просто. Если ты хочешь проверять на null каждый экземпляр value-типа то флаг в руки. авторenigmatic, ну и очевидно, что Ваша работа с исключениями ни фига не совпадает с общепринятым подходом. Ну это всего лишь твое мнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 14:56 |
|
Монады
|
|||
---|---|---|---|
#18+
enigmaticавторenigmatic, ну и очевидно, что Ваша работа с исключениями ни фига не совпадает с общепринятым подходом. Ну это всего лишь твое мнение.Так блин Если по логике программы переменная никак не должна оказаться null, тогда это ИСКЛЮЧИТЕЛЬНАЯ ситуация, она не должна была произойти по логике программы, тогда да, исключение, которое может обрабатываться в том числе и на уровне приложения. Но если null - это возможная ситуация в рамках приложения, значит она НЕ ИСКЛЮЧИТЕЛЬНАЯ, значит делать проверку через ИСКЛЮЧЕНИЕ неверно по определению самого исключения. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 15:01 |
|
Монады
|
|||
---|---|---|---|
#18+
enigmatic> по сниппету По какому сниппету? Я что-то писал о сниппетах? enigmaticИспользуй Application.UnhandledException, а не то что ты написал Ээ? Я писал про отлавливание NPE, который съедается блоком catch. Каким боком тут Application.UnhandledException? enigmaticСвойство с нетривиальной логикой в аксессоре это общая практика, я правильно понял? Опустим слово "нетривиальный". Просто логика. Не auto-implemented properties - вполне себе общая практика. enigmaticА ты уверен, что это монады? Почему ты в этом уверен? Что - это? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 15:05 |
|
Монады
|
|||
---|---|---|---|
#18+
enigmaticЕсли ты хочешь проверять на null каждый экземпляр reference -типа то флаг в руки. Очевидное исправление. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 15:14 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КskyANAЗатем к проклятиям присоединится вторая линия поддержки, потому как логи засираются ни о чём не говорящими "null reference exception"-ами.Если в лог не пишут stack trace - сами виноваты.Пишется, но зачастую знание того, что причину исключения надо искать в 41 строке такого-то файла ничем не помогает саппорту. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 15:21 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... Если в лог не пишут stack trace - сами виноваты.Пишется, но зачастую знание того, что причину исключения надо искать в 41 строке такого-то файла ничем не помогает саппорту.Ведь эти логи не для саппорта. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 15:34 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КskyANAenigmatic, ну и очевидно, что Ваша работа с исключениями ни фига не совпадает с общепринятым подходом.Глобальный обработчик в Application.UnhandledException гораздо лучше общепринятых подходов, которых нет.Что значит лучше? Глобальный обработчик необработанных исключений - это часть подхода А подход очень прост: если мы в данном месте кода знаем, что состояние является исключительным, то генерируем исключение, если можем обработать исключение, то обрабатываем, иначе пробрасываем выше. Далее тоже самое применяется для кода выше и доходит до уровня приложения и глобального обработчика. Количеество непойми отчего и где возникших исключений сокращается в разы. Работает и в C#, и в Java, и в PHP, и в JavaScript. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 15:48 |
|
Монады
|
|||
---|---|---|---|
#18+
enigmaticskyANAСначала вас проклянут пользователи, так как не будут понимать почему программа говорит какие-то общие слова о том, что не может работать. Потом вас проклянёт первая линия поддержки, потому как по сообщению ни фига не понятно где конкретно произошла ошибка и что предложить пользователю в качестве временного воркэраунда. Затем к проклятиям присоединится вторая линия поддержки, потому как логи засираются ни о чём не говорящими "null reference exception"-ами. И наконец разрабочик, которому придётся переключаться со своей ветки на релизную, чтобы посмотреть, что же в той строке кода может быть null. Вот как-то так Кошмар на улице Вязов просто. Если ты хочешь проверять на null каждый экземпляр value-типа то флаг в руки. авторenigmatic, ну и очевидно, что Ваша работа с исключениями ни фига не совпадает с общепринятым подходом. Ну это всего лишь твое мнение.Ну когда системой ежедневно пользуются полтора миллиона пользователей, то такое разгильдяйство как Ваше приводит нет, не к кошмару, но по крайней мере к тому, что лично Вам вряд-ли будут давать ответсвенные направления, повышать зп, особо ценить. Одни бужут смеяться над тем, что очередная бага адресована Вам, а другие ругаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 15:53 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КskyANAпропущено... Пишется, но зачастую знание того, что причину исключения надо искать в 41 строке такого-то файла ничем не помогает саппорту.Ведь эти логи не для саппорта.Ну я выше вроде детально расписал, кто в итоге будет разбираться с логами. При этом его будут пинать, так как саппорт самостоятельно не смог дать пользователю быстрого решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 15:57 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... Глобальный обработчик в Application.UnhandledException гораздо лучше общепринятых подходов, которых нет.Что значит лучше? Глобальный обработчик необработанных исключений - это часть подхода А подход очень прост: если мы в данном месте кода знаем, что состояние является исключительным, то генерируем исключение, если можем обработать исключение, то обрабатываем, иначе пробрасываем выше. Далее тоже самое применяется для кода выше и доходит до уровня приложения и глобального обработчика. Количеество непойми отчего и где возникших исключений сокращается в разы. Работает и в C#, и в Java, и в PHP, и в JavaScript.И будем в каждом button_click (WPF, WinForms) или в каждом методе контроллера (Asp.Net) ставить try...catch. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 18:20 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КskyANAпропущено... Что значит лучше? Глобальный обработчик необработанных исключений - это часть подхода А подход очень прост: если мы в данном месте кода знаем, что состояние является исключительным, то генерируем исключение, если можем обработать исключение, то обрабатываем, иначе пробрасываем выше. Далее тоже самое применяется для кода выше и доходит до уровня приложения и глобального обработчика. Количеество непойми отчего и где возникших исключений сокращается в разы. Работает и в C#, и в Java, и в PHP, и в JavaScript.И будем в каждом button_click (WPF, WinForms) или в каждом методе контроллера (Asp.Net) ставить try...catch. Удачи!Нет конечно. Я же написал: "если можем обработать исключение". Под можем обработать имеется ввиду, что можем осмысленно обработать в данном месте программы. Тупо расставить везде try...catch - это не то. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 19:44 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей К, ну и Вы упускаете из виду тот момент, что пока программист разбирается с исключением, то пользователи ждут. И если в корпоративной среде пусть ждут, никуда они не денутся. То пользователи коммерческого ПО могут послать лесом и уйти к конкурентам. А если сообщение об ошибке более осмысленное и сопровождено более подробной информацией, то саппорт может предложить пользователю быстрое решение, а ишью спокойно приоритезировать, не разводя суеты. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 19:52 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAАлексей К, ну и Вы упускаете из виду тот момент, что пока программист разбирается с исключением, то пользователи ждут. Что за бред? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 22:29 |
|
Монады
|
|||
---|---|---|---|
#18+
МСУskyANAАлексей К, ну и Вы упускаете из виду тот момент, что пока программист разбирается с исключением, то пользователи ждут. Что за бред?Ну давай расскажи, что будет делать пользователь, когда где-то в коде неизвестно отчего падает null reference exception. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 23:20 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANA, года два назад взял пробник совдеповской срм ( посмотреть что за зверь по просьбе заказчика) и при первом запуске вывалилось nullreferenceexception, тут же мило послал нах.. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 23:45 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAМСУпропущено... Что за бред?Ну давай расскажи, что будет делать пользователь, когда где-то в коде неизвестно отчего падает null reference exception. расчехлять дебаггер, что же ещё? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 00:51 |
|
Монады
|
|||
---|---|---|---|
#18+
Где-то в степиskyANA, года два назад взял пробник совдеповской срм ( посмотреть что за зверь по просьбе заказчика) и при первом запуске вывалилось nullreferenceexception, тут же мило послал нах.. год назад поступил холодный звонок из города кукуево, впаривают свою срм по все матушке Россие, решил глянуть... отэто я огрёб, хорошо на виртуалке ставил. чувачьё писало свою говно-срм по книжкам 2000-ых, на убогих вебформах образца 2.0... валилось и падало в том чесле с какими-то экцепшенами через раз. похоже только я один в этом мире не понимаю, как они это продают. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 00:54 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAМСУпропущено... Что за бред?Ну давай расскажи, что будет делать пользователь, когда где-то в коде неизвестно отчего падает null reference exception. Дебажить на тестовом иди девелоперском стенде, сливать при необходимости БД или часть тестируемых данных с продуктива. Или ты дебажишь продуктив? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 01:08 |
|
Монады
|
|||
---|---|---|---|
#18+
hVostt, Проблема не нова, российский продукт имеет свою специфику равно как и нишу, продаются же рос. авто-ведра с надписями на ремнях без. - "от родных и близких", хотя по меж. классификации это геноцид. Чтож Вы хотите, 70 лет выпускали г...о, а тут бац - и конфетка, так не бывает..( хотя есть исключения) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 01:18 |
|
Монады
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныАлексей КИ будем в каждом button_click (WPF джошсмит негодует, однакоГлавное, чтобы Фаулер был доволен. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 05:56 |
|
Монады
|
|||
---|---|---|---|
#18+
МСУskyANAпропущено... Ну давай расскажи, что будет делать пользователь, когда где-то в коде неизвестно отчего падает null reference exception. Дебажить на тестовом иди девелоперском стенде, сливать при необходимости БД или часть тестируемых данных с продуктива. Или ты дебажишь продуктив? Пользователь будет дебажить на тестовом стенде, я правильно тебя понял? Что же это за продукт такой и кто его пользователи? Та CRM, о которой Хвост и Где-то в степи пишут? Они не поняли, что надо было дебажить. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 09:10 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAМСУпропущено... Дебажить на тестовом иди девелоперском стенде, сливать при необходимости БД или часть тестируемых данных с продуктива. Или ты дебажишь продуктив? Пользователь будет дебажить на тестовом стенде, я правильно тебя понял? Что же это за продукт такой и кто его пользователи? Та CRM, о которой Хвост и Где-то в степи пишут? Они не поняли, что надо было дебажить. Опять дурака включаешь? Дебажит программист. А что будет делать пользователь, я не в курсе. Возможно, будет пить кофе. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 09:28 |
|
Монады
|
|||
---|---|---|---|
#18+
МСУskyANAпропущено... Пользователь будет дебажить на тестовом стенде, я правильно тебя понял? Что же это за продукт такой и кто его пользователи? Та CRM, о которой Хвост и Где-то в степи пишут? Они не поняли, что надо было дебажить. Опять дурака включаешь? Дебажит программист. А что будет делать пользователь, я не в курсе. Возможно, будет пить кофе.Понятно, МСУ опять читал не внимательно, а дураком меня обзывает. МСУ такой МСУ ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 10:50 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAПонятно, МСУ опять читал не внимательно, а дураком меня обзывает. МСУ такой МСУ Всё правильно МСУ говорит, нельзя дебажить или разбираться с проблемой на продакшене. Мало того, программист может не иметь доступа к реальным данным, поэтому только на стенде. Если пользователи сталкиваются с тупой ошибкой, это проблема QA, а не программистов. По шапке есть кому давать ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 11:23 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttskyANAПонятно, МСУ опять читал не внимательно, а дураком меня обзывает. МСУ такой МСУ Всё правильно МСУ говорит, нельзя дебажить или разбираться с проблемой на продакшене. Мало того, программист может не иметь доступа к реальным данным, поэтому только на стенде. Если пользователи сталкиваются с тупой ошибкой, это проблема QA, а не программистов. По шапке есть кому давать А где я писал про разбирательство с проблемой в продакшене? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 11:29 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAИ наконец разрабочик, которому придётся переключаться со своей ветки на релизную, чтобы посмотреть, что же в той строке кода может быть null.Типа здесь что-ли? Тут речь про ветку (branch) в системе контроля версий. И про переключение на неё, чтобы обновить свой локальный репозиторий до того кода, что на продакшене крутится и посмотреть что там в 41-й строке кода может быть null. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 11:33 |
|
Монады
|
|||
---|---|---|---|
#18+
Речь о том, что на разбирательство с исключением "Object reference not set to an instance of an object." уйдёт гораздо больше времени, чем на, например: "Customer was not found by the specified criteria" и в Exception.Data перечислены параметры поиска, определённые пользователем. Саппорт а) сможет понять, есть-ли воркэраунд для пользователя б) увидеть количество конкретно этих исключений в общей массе, когда и при каких условиях они возникают и приоретизировать их. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 11:46 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAРечь о том, что на разбирательство с исключением "Object reference not set to an instance of an object." уйдёт гораздо больше времени, чем на, например: "Customer was not found by the specified criteria" и в Exception.Data перечислены параметры поиска, определённые пользователем. Саппорт а) сможет понять, есть-ли воркэраунд для пользователя б) увидеть количество конкретно этих исключений в общей массе, когда и при каких условиях они возникают и приоретизировать их. Почему вообще пользователи должны видеть детали сообщений об ошибках? Можно же запросить/отправить отчёт со всеми выкладками и стектрейсом на почту разработчикам, обычно такие непонятные сообщения до усрачки пугают некоторых пользователей. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 11:50 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttskyANAРечь о том, что на разбирательство с исключением "Object reference not set to an instance of an object." уйдёт гораздо больше времени, чем на, например: "Customer was not found by the specified criteria" и в Exception.Data перечислены параметры поиска, определённые пользователем. Саппорт а) сможет понять, есть-ли воркэраунд для пользователя б) увидеть количество конкретно этих исключений в общей массе, когда и при каких условиях они возникают и приоретизировать их. Почему вообще пользователи должны видеть детали сообщений об ошибках? Можно же запросить/отправить отчёт со всеми выкладками и стектрейсом на почту разработчикам, обычно такие непонятные сообщения до усрачки пугают некоторых пользователей.А почему ты решил, что пользователи видят детали сообщения об ошибках? Пользователи видят какие-то общие слова типа "Извините, попробуйте повторить попытку позже": 16500568 . ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 11:53 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAПользователи видят какие-то общие слова типа "Извините, попробуйте повторить попытку позже": 16500568 .Это когда у нас один глобальный обработчик исключений. Когда же обработка исключительных ситуаций реализовано более грамотным способом, то система ведёт себя более интеллектуально и дружелюбно по отношению к пользователю и к саппорту ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 11:58 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANA, нету тут критерия разработки в контексте рашендевелопинга, это все зависит от культуры производства и методологии, и рассматривать все это надо в комплексе, а это и поддержка и подробные хелпы с примерами, доскональное тестирование, и внятное объяснение проблем со стороны программы, конечно что то меняется но исходя их эмпирики х.. че изменится. Вспоминаю один случай, одинцешник скачал конвертатор от федералов и до обеда бился над ним, на все вопросы в чем дело че валится Новосибирский саппорт ( родитель этого чуда) вежливо отвечал голосом какой то бляди и перманентно советовал скачать по новой и переустановить.. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 12:26 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAМСУпропущено... Опять дурака включаешь? Дебажит программист. А что будет делать пользователь, я не в курсе. Возможно, будет пить кофе.Понятно, МСУ опять читал не внимательно, а дураком меня обзывает. МСУ такой МСУ Ты реально в вакууме... Еще раз. Ты спросил skyANAто будет делать пользователь, когда где-то в коде неизвестно отчего падает Я ответил не на этот конкретный вопрос. А я ответил, что нужно делать. Вообще делать. МСУДебажить на тестовом иди девелоперском стенде, сливать при необходимости БД или часть тестируемых данных с продуктива. Что было не понятно из сказанного? Но ты опять дое..ся до слов, прикинулся дурачком и задал вопрос про то, что пользователь будет дебажить код. Ну что за бред-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 12:27 |
|
Монады
|
|||
---|---|---|---|
#18+
МСУskyANAпропущено... Понятно, МСУ опять читал не внимательно, а дураком меня обзывает. МСУ такой МСУ Ты реально в вакууме... Еще раз. Ты спросил skyANAто будет делать пользователь, когда где-то в коде неизвестно отчего падает Я ответил не на этот конкретный вопрос. А я ответил, что нужно делать. Вообще делать.Спасибо, кэп, но речь не про это. Остальное поскипал, так как это развитие мысли в другую сторону. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 12:35 |
|
Монады
|
|||
---|---|---|---|
#18+
Где-то в степиskyANA, нету тут критерия разработки в контексте рашендевелопинга, это все зависит от культуры производства и методологии, и рассматривать все это надо в комплексе, а это и поддержка и подробные хелпы с примерами, доскональное тестирование, и внятное объяснение проблем со стороны программы, конечно что то меняется но исходя их эмпирики х.. че изменится.Ну судя по реакции публики, многие кладут болт на то, что ты назвал "культуры производства и методологии", и считают это очевидной нормой. Не все конечно, но многие. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 12:39 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANA, ну а смысл тогда вступать в бесполезную дискуссию, все что тут происходит - софистика. Тем более спорить о вкусе ананаса с человеком который никогда его не ел )) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 13:18 |
|
Монады
|
|||
---|---|---|---|
#18+
Где-то в степи, а какие конкретно выссказывания являются на твой взгляд софизмами? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 13:33 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAПользователи видят какие-то общие слова типа "Извините, попробуйте повторить попытку позже": 16500568 . Прошу понять и простить ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 13:38 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAСпасибо, кэп, но речь не про это. В общем, мысль такая. Глобальная обработка должна быть железобетонно. Небольшие отдельные затычки для более внятной формулировки исключения, в принципе, тоже не возбраняются. Но только без фанатизма. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 14:07 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAГде-то в степи, а какие конкретно выссказывания являются на твой взгляд софизмами? в том то и дело, что в софистике любое высказывание выдранное из контекста и не только, верно и логично,( если бы это было не верно - мы бы не говорили о софистике как искусстве спора) Надо смотреть конечный результат и предмет дискуссии. Сахар - черный, без сомнения аргументы всех сторон ( если учесть что стороны имеют виртуозность в этом предмете) будут true Или вот МСУ, имхо виртуозно владеет этим направлением ( если отбросить агрессивность и профанацию), он безболезненно может убедить и доказать что земля плоская или круглая ( в зависимости с какого конца произошел вброс) это искусство, оттачивается годами )) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 14:15 |
|
Монады
|
|||
---|---|---|---|
#18+
МСУskyANAСпасибо, кэп, но речь не про это. В общем, мысль такая. Глобальная обработка должна быть железобетонно.Спасибо, кэп, ещё раз. МСУНебольшие отдельные затычки для более внятной формулировки исключения, в принципе, тоже не возбраняются. Но только без фанатизма.Спасибо, кэп, три раза, но затычки вообще не нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 14:26 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAЭто тебе не унылый хохлосрач в А51, тут всё гораздо жёстче! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 14:34 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КskyANAЭто тебе не унылый хохлосрач в А51, тут всё гораздо жёстче! Что-то я жёсткости пока не увидел, если честно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 14:42 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAВ общем, мысль такая. Глобальная обработка должна быть железобетонно.Спасибо, кэп, ещё раз.[/quot] На здоровье. skyANAМСУНебольшие отдельные затычки для более внятной формулировки исключения, в принципе, тоже не возбраняются. Но только без фанатизма.Спасибо, кэп, три раза, но затычки вообще не нужны. Так ты сам предлагал эти затычки. Теперь не нужны? Тогда снимаю шляпу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 15:39 |
|
Монады
|
|||
---|---|---|---|
#18+
МСУТак ты сам предлагал эти затычки. Теперь не нужны?Нет, не нужны и я их не предлагал. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 15:49 |
|
Монады
|
|||
---|---|---|---|
#18+
А в чем спор? Где ошибки ловить? Конечно там где знаем как их обработать. Или я выпал из дискуссии? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 16:07 |
|
Монады
|
|||
---|---|---|---|
#18+
Denis.А в чем спор? Где ошибки ловить? Конечно там где знаем как их обработать. Или я выпал из дискуссии? )Да нет, не выпал. Пришли к тому, что "там где знаем как их обработать" - это оказывается затычка, а ни фига не общепринятый подход ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 16:11 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAМСУТак ты сам предлагал эти затычки. Теперь не нужны?Нет, не нужны и я их не предлагал. Ложь. Снова ложь. 16503383 skyANAАлексей КИ будем в каждом button_click (WPF, WinForms) или в каждом методе контроллера (Asp.Net) ставить try...catch. Удачи!Нет конечно. Я же написал: "если можем обработать исключение". Под можем обработать имеется ввиду, что можем осмысленно обработать в данном месте программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 16:27 |
|
Монады
|
|||
---|---|---|---|
#18+
МСУskyANAпропущено... Нет, не нужны и я их не предлагал. Ложь. Снова ложь. 16503383 skyANAпропущено... Нет конечно. Я же написал: "если можем обработать исключение". Под можем обработать имеется ввиду, что можем осмысленно обработать в данном месте программы.МСУ, хватит троллить. Русским же языком написано: если можем осмысленно обработать в данном месте программы. Как это коррелирует с твоими "затычками" и "фанатизмом"? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 17:00 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAМСУ, хватит троллить. Даже и не думал этого делать. skyANAРусским же языком написано: если можем осмысленно обработать в данном месте программы. Как это коррелирует с твоими "затычками" и "фанатизмом"? А у меня не тоже самое сказано в этом посте? 16506983 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 18:00 |
|
Монады
|
|||
---|---|---|---|
#18+
Странно, что никто про контракты не вспомнил. Их что, никто не юзает? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 10:14 |
|
Монады
|
|||
---|---|---|---|
#18+
Arm79, речь о System.Diagnostics.Contracts? Мы юзаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 11:12 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAArm79, речь о System.Diagnostics.Contracts? Мы юзаем. Это к тому, что null или не null может прийти. Если заложить в контракт соответствующее требование - проблема с null должна решиться? Естественно, на глобальный обработчик исключений нужно навесить обработку с сохранением полного stacktrace А делать try-catch или нет - дело вкуса. Я встречал оба подхода в разработке - пытаться предусмотреть все варианты exception и реагировать на них, и наоборот - ожидать только успешного завершения, а в случае ошибки перезапускать обработку (количество попыток и таймауты задаются). Не могу однозначно отдать предпочтение тому или иному подходу - использую оба :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 11:31 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1402538]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
769ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
158ms |
get tp. blocked users: |
2ms |
others: | 338ms |
total: | 1312ms |
0 / 0 |