powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Исключения vs коды возвратов
25 сообщений из 406, страница 14 из 17
Исключения vs коды возвратов
    #39673607
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 10:45 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21568042][21568042]
>...Вы что с деревьев слезли?... Что вы постоянно выдумываете какую-то фигню…
Опять за своё. Ну не понимают жующие желуди вкус апельсина.

Я то думал, приводя версию кода ( здесь и здесь ), что мне покажут как надо писать код или, по крайней мере, почему плох мой вариант кода.

Получил ответ так и так .

Прокомментировал
Добавлю:
Зачем в коде
public class EntityQuery : IQuery<EntityQueryContext, Entity> создается var list = new List<Entity>();
Не ДОЛЖЕН РАБОТАТЬ class EntityQuery с Entity.
С Entity и списком сущностей работает класс панели (UserControl), там они и определяются. И Entity не выносится за пределы панели.
На мой взгляд, class EntityQuery должен использовать обратный вызов метода панели. У меня бывает, что одна и та же выборка, обрабатывается разными методами панели.
Но моё решение, другие делают иначе. Но не стоит вешать любимый Вами ярлык на эти варианты.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673614
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRhVosttНо отличить код от говнокода можно по ряду критериев. Поэтому не надо ляля.
В контексте спора критерий может быть лишь один - готов ли кто-то заплатить за этот код и сколько, верно?
Есть у меня знакомый математик (в школьные годы участвовал вместе с Григорием Перельманом на всесоюзной олимпиаде), зарабатывает сейчас программированием математики. Делал он нам библиотечку с серьезной математикой. Так вот, его код для меня - 100% "говнокод", однако никаких претензий по этому поводу мы ему, разумеется, не выдвигали. А заплатили очень хорошие за действительно хорошую работу.

а что конкретно у этого математика было говнокодом , кроме фатального недостатка?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673620
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВМоисеевПрограммирование в какой-то степени искусство. Как я понимаю, у художников они есть

Я думаю вот здесь и есть проблема. Когда разработчик думает, что он художник, надо его гнать в шею ссаными тряпками. Это писец. Ему в моду надо, платьями, бирюльками заниматься, а не разработкой. Пусть найдёт себя.Художника каждый может обидеть. Сейчас обидно было! :D думаю как и художник, программист должен обладать сильным абстрактным мышлением, для удержания картины системы в целом в голове, в целом для заданного компонента. Некое внутренние видение, с учётом требования и заложенной архитектуры.
Если меня попросить нарисовать Мона Лизу, это будет ужасно некрасиво, но если я буду 10 лет практиковать это, может, что и получится =) Так же и в программировании, качественный код не может быть у человека, который только начал свой путь в этом направлении. Навыки появляются не за 1 год, понимание многих вещей в том числе. И для понимания нужно обладать огромным количеством знаний, на вроде того, как работает процессор, чтоб понимать, что в результате ты действительно написал. я программирую около 20 лет, профессионально около 10, не считаю себя гуру или "Ван Гогом".

p.s. так как не считаю себя гуру, часто не даю советов в которых сам не уверен =)
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673623
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRВ контексте спора критерий может быть лишь один - готов ли кто-то заплатить за этот код и сколько, верно?

Ну в точку! Стоимость говнокодера намного дешевле, чем профессионального разработчика, который пишет качественный код и стремиться к этому, без бумажек, тыканий мордой и пинков.

LRЕсть у меня знакомый математик (в школьные годы участвовал вместе с Григорием Перельманом на всесоюзной олимпиаде), зарабатывает сейчас программированием математики. Делал он нам библиотечку с серьезной математикой. Так вот, его код для меня - 100% "говнокод", однако никаких претензий по этому поводу мы ему, разумеется, не выдвигали. А заплатили очень хорошие за действительно хорошую работу.

И что, библиотека поддерживается? Развивается? Участвует в различных проектах? Посмотрите на код в гитхабе у библиотек с большой популярностью. Они написаны качественно, покрыты тестами, следуют практикам и принципам. Некоторые годами развиваются и при этом не ломают тысячи и сотни тысяч проектов, в которых применяются (инциденты бывают, но крайне редко).

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

Почему вы себя все время сравниваете со свиньями? Вы же не хотите профессионально расти, вам и жёлуди подходят.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673628
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesХудожника каждый может обидеть. Сейчас обидно было!

Художник тут в том смысле, как как вижу, так и рисую. Что вижу, то и пою. Как хочу так и делаю.

Как будто кто-то мешает. В конторы только главное не напрашиваться, где люди работают, и у них есть цели и задачи. Хочешь быть художником, пожалуйста, инди разработку никто не отменял.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673629
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttИ что, библиотека поддерживается? Развивается? Участвует в различных проектах? Посмотрите на код в гитхабе у библиотек с большой популярностью. Они написаны качественно, покрыты тестами, следуют практикам и принципам. Некоторые годами развиваются и при этом не ломают тысячи и сотни тысяч проектов, в которых применяются (инциденты бывают, но крайне редко).
Они что, по-вашему, долбанулись?
Им промыли мозги?мне кажется продакшн код выкладывая в паблик, стыдно выкладывать, если это говнокод :) мне иногда и самому стыдно бывает :)

самый лучший способ учиться не говнокодить, изучать потроха dot.net'а, там многое уже реализовано. Просто вспомните где есть подобное тому, что вам нужно, зайдите на сайт мс или декомрилер и читай на здоровье.
даже декомпиляторы выдают вполне красивый код, местами правда перегруженный по тексту
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673640
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевНо моё решение, другие делают иначе. Но не стоит вешать любимый Вами ярлык на эти варианты.

Вы чего хотите, я не понимаю, печеньку? Делайте как хотите.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673645
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachа что конкретно у этого математика было говнокодом , кроме фатального недостатка?
"Говнокод" - понятие совершенно субъективное (это hVostt считает его объективным).
Конкретно там мне не понравился "процедурный стиль", old school)) Множество статических публичных членов, доступных и обновляемых из такого же неструктурированного (для меня, для него, не сомневаюсь, очень даже структурированного) множества различных процедур.

hVosttИ что, библиотека поддерживается? Развивается? Участвует в различных проектах?
Библиотека успешно эксплуатируется. Никакой необходимости в развитии нет и не предвидится.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673667
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR"Говнокод" - понятие совершенно субъективное (это hVostt считает его объективным).

Давайте так. Вам знакомы хоть какие-то критерии качества кода? Нет? Ну тогда не нужно выдумывать про субъективные понятия. Да? Ну тогда вы себе противоречите.

LRБиблиотека успешно эксплуатируется. Никакой необходимости в развитии нет и не предвидится.

Хорошо. Что и требовалось доказать. Если у человека выпала возможность и необходимость один раз написать какой-то код, чтобы добиться какой-то цели, он это может сделать как угодно и это может занять сколько угодно времени.

Мы говорим про профессию, а вы про случай, как в моём примере, когда зашили рану ржавой иглой и пацинет выжил. Это что-то доказывает? Даже не смешно.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673670
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesсамый лучший способ учиться не говнокодить

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

Никто со своим кодом на выставки не ездит и премии за качество кода не получает.
Именно поэтому, некоторые люди не понимают, зачем тогда писать качественный хороший код.

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

Хорошо, если у них есть стабильное пригретое место, где они могут продержаться до пенсии.
Тогда вопросов нет.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673673
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНу в точку! Стоимость говнокодера намного дешевле, чем профессионального разработчика, который пишет качественный код и стремиться к этому, без бумажек, тыканий мордой и пинков.
Да, мысль приставить к этому математику "разработчика, который пишет качественный код", могла бы промелькнуть но и только. Вероятность ошибок реализации в таком случае многократно бы возросла, не говоря уже о времени, нервах и трудозатратах.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673685
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttLR"Говнокод" - понятие совершенно субъективное (это hVostt считает его объективным).

Давайте так. Вам знакомы хоть какие-то критерии качества кода? Нет? Ну тогда не нужно выдумывать про субъективные понятия. Да? Ну тогда вы себе противоречите.
Уже вроде все согласились - если код покупают (и кодер с этого живет) - это качественный/пофессиональный код.

hVosttМы говорим про профессию, а вы про случай, как в моём примере, когда зашили рану ржавой иглой и пацинет выжил. Это что-то доказывает? Даже не смешно.
Профессия - то, что кормит. Если "говнокодеры" зарабатывают "говнокодерством" - они профессионалы.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673705
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRhVosttпропущено...


Давайте так. Вам знакомы хоть какие-то критерии качества кода? Нет? Ну тогда не нужно выдумывать про субъективные понятия. Да? Ну тогда вы себе противоречите.
Уже вроде все согласились - если код покупают (и кодер с этого живет) - это качественный/пофессиональный код.



Слово "качественный" тут лишнее.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673709
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRУже вроде все согласились - если код покупают (и кодер с этого живет) - это качественный/пофессиональный код.
Как говорил Жириновский: "Каждой бабе по мужику")).
Для кого то привокзальный представитель это качественный, профессиональный код. Мужик
Вот если он непросто живёт, а очень хорошо живет)))))
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673712
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiLRпропущено...

Уже вроде все согласились - если код покупают (и кодер с этого живет) - это качественный/пофессиональный код.



Слово "качественный" тут лишнее.
Почему? Код - товар. Вы же не будете покупать недостаточно качественный товар? Если хотите, пусть будет "достаточно качественный".
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673717
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRschiпропущено...


Слово "качественный" тут лишнее.
Почему? Код - товар. Вы же не будете покупать недостаточно качественный товар? Если хотите, пусть будет "достаточно качественный".

Потому что лишнее. Код - это не товар, товар - это в лучшем случае результат компиляции кода.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673719
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRДа, мысль приставить к этому математику "разработчика, который пишет качественный код", могла бы промелькнуть но и только. Вероятность ошибок реализации в таком случае многократно бы возросла, не говоря уже о времени, нервах и трудозатратах.

Именно поэтому написание бизнес-логики мы вынесли в DSL на Lua, который пишут аналитики, а они ни разу не программисты. Просто пишут обычные сценарии. Среди них есть и математические, и довольно таки сложные. Но код линейный, способы компоновки задано архитектурой, тонны проверок, чтобы аналитик не выстрелил себе в ногу.

LRПрофессия - то, что кормит. Если "говнокодеры" зарабатывают "говнокодерством" - они профессионалы.

Вы про инди разработчиков, которые пишут свои калькуляторы, или про разработку крупных систем, в которых задействовано много разработчиков и есть такие понятия, как текучка кадров, bus factor?

О чём вы говорите вообще? Если каждый «художник» будет приходить и писать как лично ему кажется правильным, потом приходит другой и пытается догадаться, что имел в виду предыдущий художник.

Если мы говорим о C#, то ошибки ловят в исключениях. Если валидация, то передаются в специальных структурах.

А если приходит очередной жеватель желудей, Вася, который думает что это апельсины, который клал хер на всё и на всех, засунул свои ошибки в какую-то статическую переменную на задворках, где теперь искать концы? Разбираться что там, будет ли это работать в многопоточной среде, что делать если статического текста нехватает, всё переписывать? И громко материться?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673738
казинак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttИменно поэтому написание бизнес-логики мы вынесли в DSL на Lua, который пишут аналитики, а они ни разу не программисты.
если бизнес-логику пишут аналитики то на хрена там вы?
заказчику то нужна бизнес-логика, а не ваши красивости в коде
я так понимаю вы просто пильщики
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673744
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
казинак,

значит там "бизнес - логика" детский лепет
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673823
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA Функциональный C#. Часть 4. Обработка исключений

Угу, автор, как это обычно бывает, намеренно привёл отвратительную реализацию в противовес своему подходу:

Код: 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.
[HttpPost]
public HttpResponseMessage CreateCustomer(string name, string billingInfo)
{
    Result<CustomerName> customerNameResult = CustomerName.Create(name);
    if (customerNameResult.Failure)
    {
        _logger.Log(customerNameResult.Error);
        return Error(customerNameResult.Error);
    }
 
    Result<BillingInfo> billingInfoResult = BillingInfo.Create(billingInfo);
    if (billingInfoResult.Failure)
    {
        _logger.Log(billingInfoResult.Error);
        return Error(billingInfoResult.Error);
    }
 
    Customer customer = new Customer(customerNameResult.Value);
 
    try
    {
        _repository.Save(customer);
    }
    catch (SqlException)
    {
        _logger.Log(“Unable to connect to database”);
        return Error(“Unable to connect to database”);
    }
 
    _paymentGateway.ChargeCommission(billingInfoResult.Value);
 
    _emailSender.SendGreetings(customerNameResult.Value);
 
    return new HttpResponseMessage(HttpStatusCode.OK);
}




А теперь перепишем, как это должно было быть:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
[HttpPost]
public HttpResponseMessage CreateCustomer(string name, string billingInfo)
{
    var customerName = CustomerName.Create(name); 
    var billingInfo = BillingInfo.Create(billingInfo);
    var customer = new Customer(customerName);
    _repository.Save(customer);
    _paymentGateway.ChargeCommission(billingInfo);
    _emailSender.SendGreetings(customerName);
    return new HttpResponseMessage(HttpStatusCode.OK);
}




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

Что касается кода, приведённого в конце, как решение всех проблем, то там уже очевидная проблема в коде, которого изначально и не было:

Код: c#
1.
2.
3.
4.
.OnSuccess(
            customer => _repository.Save(customer)
                .OnFailure(() => _paymentGateway.RollbackLastTransaction())
        )




И вот это, "отлов ошибок" типа в функциональном стиле, чтобы потом сделать ровно тоже самое, что может сделать фильтр API, выгоды не видно совсем. Если же внутри всё написано в таком же ключе, то весь путь ошибки, проброшенный через эти "промисы" потеряется окончательно, всё ради того, чтобы залогировать корень проблемы, но не её путь. Хотя если каждый компонент по пути следования ошибки будет оборачивать в свою структуру, то... привет недоделанные исключения! Ещё строчку и файл нужно добавлять, тогда вообще будет сказка. Поехали на нашем велосипеде, чё ты, бросай это старьё

Ладно, если такой подход позволял раньше более или менее красиво обойти проблему коллбеков при асинхронном подходе, сейчас при наличии async/await, это зачем нужно, непонятно.

В общем, статья не убедительна, но как пример, что можно ещё так накостылить, показательна :) Где-то может будет удобно применить подобный подход, но плюсов не вижу. Функциональный стиль, здесь с большим натягом.
Конечно статья не убидительна, ведь ты её читал по диагонали судя по тому, что приводишь пример того, как типа должно быть ровно такой, с чего она начинается
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673826
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttlove_bachне понял, често что ты хотел сказать. и адвокат, и прокурор одновременно. "Видим, что Result тут приходит из сервисов", ну и что, каким это боком к исключениям?

Здесь речь идёт о том, что все исключения надо подавлять везде на самой ранней стадии, т.е. по сути придётся бороться с исключениями.вообще-то это не борьба, не подавление, а правило
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673830
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673834
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>hVostt, сегодня, 10:45 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21568042][21568042]
>...Вы что с деревьев слезли?... Что вы постоянно выдумываете какую-то фигню…
Опять за своё. Ну не понимают жующие желуди вкус апельсина.

Я то думал, приводя версию кода ( здесь и здесь ), что мне покажут как надо писать код или, по крайней мере, почему плох мой вариант кода.

Получил ответ так и так .

Прокомментировал
Добавлю:
Зачем в коде
public class EntityQuery : IQuery<EntityQueryContext, Entity> создается var list = new List<Entity>();
Не ДОЛЖЕН РАБОТАТЬ class EntityQuery с Entity.
С Entity и списком сущностей работает класс панели (UserControl), там они и определяются. И Entity не выносится за пределы панели.
На мой взгляд, class EntityQuery должен использовать обратный вызов метода панели. У меня бывает, что одна и та же выборка, обрабатывается разными методами панели.
Но моё решение, другие делают иначе. Но не стоит вешать любимый Вами ярлык на эти варианты.Я могу объяснить смысл и плюсы данного подхода.
Но кажется мне, что Вы не готовы слушать и понимать.
Судя по тому, что Вы не увидели, что общая часть уехала в базовый класс, и нет в итоге в EntityQuery выражения var list = new List<Entity>();
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39673841
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевС Entity и списком сущностей работает класс панели (UserControl), там они и определяются. И Entity не выносится за пределы панели.
Простите, а что Вы в базе храните?
...
Рейтинг: 0 / 0
25 сообщений из 406, страница 14 из 17
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Исключения vs коды возвратов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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