Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 8 9 10 11 12 13 [14] 15 16 17   вперед  Ctrl
 Re: Исключения vs коды возвратов  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2058
>hVostt, сегодня, 10:45 [21568042]
>...Вы что с деревьев слезли?... Что вы постоянно выдумываете какую-то фигню…
Опять за своё. Ну не понимают жующие желуди вкус апельсина.

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

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

Прокомментировал
Добавлю:
Зачем в коде
public class EntityQuery : IQuery<EntityQueryContext, Entity> создается var list = new List<Entity>();
Не ДОЛЖЕН РАБОТАТЬ class EntityQuery с Entity.
С Entity и списком сущностей работает класс панели (UserControl), там они и определяются. И Entity не выносится за пределы панели.
На мой взгляд, class EntityQuery должен использовать обратный вызов метода панели. У меня бывает, что одна и та же выборка, обрабатывается разными методами панели.
Но моё решение, другие делают иначе. Но не стоит вешать любимый Вами ярлык на эти варианты.
13 июл 18, 11:49    [21568291]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
love_bach
Member

Откуда:
Сообщений: 577
LR
hVostt
Но отличить код от говнокода можно по ряду критериев. Поэтому не надо ляля.

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


а что конкретно у этого математика было говнокодом, кроме фатального недостатка?
13 июл 18, 11:59    [21568331]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3658
hVostt
ВМоисеев
Программирование в какой-то степени искусство. Как я понимаю, у художников они есть


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

p.s. так как не считаю себя гуру, часто не даю советов в которых сам не уверен =)
13 июл 18, 12:07    [21568354]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
hVostt
Member

Откуда:
Сообщений: 16567
LR
В контексте спора критерий может быть лишь один - готов ли кто-то заплатить за этот код и сколько, верно?


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

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


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

Они что, по-вашему, долбанулись?
Им промыли мозги?
13 июл 18, 12:09    [21568364]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
hVostt
Member

Откуда:
Сообщений: 16567
ВМоисеев
Опять за своё. Ну не понимают жующие желуди вкус апельсина.


Почему вы себя все время сравниваете со свиньями? Вы же не хотите профессионально расти, вам и жёлуди подходят.
13 июл 18, 12:10    [21568368]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
hVostt
Member

Откуда:
Сообщений: 16567
Roman Mejtes
Художника каждый может обидеть. Сейчас обидно было!


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

Как будто кто-то мешает. В конторы только главное не напрашиваться, где люди работают, и у них есть цели и задачи. Хочешь быть художником, пожалуйста, инди разработку никто не отменял.
13 июл 18, 12:12    [21568377]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
Roman Mejtes
Member

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

самый лучший способ учиться не говнокодить, изучать потроха dot.net'а, там многое уже реализовано. Просто вспомните где есть подобное тому, что вам нужно, зайдите на сайт мс или декомрилер и читай на здоровье.
даже декомпиляторы выдают вполне красивый код, местами правда перегруженный по тексту
13 июл 18, 12:12    [21568380]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
hVostt
Member

Откуда:
Сообщений: 16567
ВМоисеев
Но моё решение, другие делают иначе. Но не стоит вешать любимый Вами ярлык на эти варианты.


Вы чего хотите, я не понимаю, печеньку? Делайте как хотите.
13 июл 18, 12:22    [21568422]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
love_bach
а что конкретно у этого математика было говнокодом, кроме фатального недостатка?

"Говнокод" - понятие совершенно субъективное (это hVostt считает его объективным).
Конкретно там мне не понравился "процедурный стиль", old school)) Множество статических публичных членов, доступных и обновляемых из такого же неструктурированного (для меня, для него, не сомневаюсь, очень даже структурированного) множества различных процедур.

hVostt
И что, библиотека поддерживается? Развивается? Участвует в различных проектах?

Библиотека успешно эксплуатируется. Никакой необходимости в развитии нет и не предвидится.
13 июл 18, 12:25    [21568432]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
hVostt
Member

Откуда:
Сообщений: 16567
LR
"Говнокод" - понятие совершенно субъективное (это hVostt считает его объективным).


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

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


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

Мы говорим про профессию, а вы про случай, как в моём примере, когда зашили рану ржавой иглой и пацинет выжил. Это что-то доказывает? Даже не смешно.
13 июл 18, 12:53    [21568559]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
hVostt
Member

Откуда:
Сообщений: 16567
Roman Mejtes
самый лучший способ учиться не говнокодить


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

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

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

Хорошо, если у них есть стабильное пригретое место, где они могут продержаться до пенсии.
Тогда вопросов нет.
13 июл 18, 12:58    [21568576]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
LR
Member

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

Да, мысль приставить к этому математику "разработчика, который пишет качественный код", могла бы промелькнуть но и только. Вероятность ошибок реализации в таком случае многократно бы возросла, не говоря уже о времени, нервах и трудозатратах.
13 июл 18, 13:01    [21568587]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
hVostt
LR
"Говнокод" - понятие совершенно субъективное (это hVostt считает его объективным).


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

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

hVostt
Мы говорим про профессию, а вы про случай, как в моём примере, когда зашили рану ржавой иглой и пацинет выжил. Это что-то доказывает? Даже не смешно.

Профессия - то, что кормит. Если "говнокодеры" зарабатывают "говнокодерством" - они профессионалы.
13 июл 18, 13:10    [21568636]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
schi
Member

Откуда: Москва
Сообщений: 2601
LR
hVostt
пропущено...


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

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



Слово "качественный" тут лишнее.
13 июл 18, 13:38    [21568836]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
LR
Уже вроде все согласились - если код покупают (и кодер с этого живет) - это качественный/пофессиональный код.

Как говорил Жириновский: "Каждой бабе по мужику")).
Для кого то привокзальный представитель это качественный, профессиональный код. Мужик
Вот если он непросто живёт, а очень хорошо живет)))))
13 июл 18, 13:43    [21568872]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
schi
LR
пропущено...

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



Слово "качественный" тут лишнее.

Почему? Код - товар. Вы же не будете покупать недостаточно качественный товар? Если хотите, пусть будет "достаточно качественный".
13 июл 18, 13:45    [21568880]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
schi
Member

Откуда: Москва
Сообщений: 2601
LR
schi
пропущено...


Слово "качественный" тут лишнее.

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


Потому что лишнее. Код - это не товар, товар - это в лучшем случае результат компиляции кода.
13 июл 18, 13:51    [21568918]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
hVostt
Member

Откуда:
Сообщений: 16567
LR
Да, мысль приставить к этому математику "разработчика, который пишет качественный код", могла бы промелькнуть но и только. Вероятность ошибок реализации в таком случае многократно бы возросла, не говоря уже о времени, нервах и трудозатратах.


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

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


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

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

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

А если приходит очередной жеватель желудей, Вася, который думает что это апельсины, который клал хер на всё и на всех, засунул свои ошибки в какую-то статическую переменную на задворках, где теперь искать концы? Разбираться что там, будет ли это работать в многопоточной среде, что делать если статического текста нехватает, всё переписывать? И громко материться?
13 июл 18, 13:53    [21568924]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
казинак
Member

Откуда:
Сообщений: 1269
hVostt
Именно поэтому написание бизнес-логики мы вынесли в DSL на Lua, который пишут аналитики, а они ни разу не программисты.

если бизнес-логику пишут аналитики то на хрена там вы?
заказчику то нужна бизнес-логика, а не ваши красивости в коде
я так понимаю вы просто пильщики
13 июл 18, 14:24    [21569050]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
ViPRos
Member

Откуда:
Сообщений: 9710
казинак,

значит там "бизнес - логика" детский лепет
13 июл 18, 14:31    [21569070]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 27207
hVostt
skyANA
Функциональный C#. Часть 4. Обработка исключений


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

[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);
}



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

[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);
}



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

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

.OnSuccess(
            customer => _repository.Save(customer)
                .OnFailure(() => _paymentGateway.RollbackLastTransaction())
        )



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

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

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

Конечно статья не убидительна, ведь ты её читал по диагонали судя по тому, что приводишь пример того, как типа должно быть ровно такой, с чего она начинается
13 июл 18, 16:48    [21569499]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 27207
hVostt
love_bach
не понял, често что ты хотел сказать. и адвокат, и прокурор одновременно. "Видим, что Result тут приходит из сервисов", ну и что, каким это боком к исключениям?


Здесь речь идёт о том, что все исключения надо подавлять везде на самой ранней стадии, т.е. по сути придётся бороться с исключениями.
вообще-то это не борьба, не подавление, а правило
13 июл 18, 16:52    [21569517]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 27207
https://enterprisecraftsmanship.com/2015/02/26/exceptions-for-flow-control-in-c/
13 июл 18, 16:56    [21569528]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 27207
ВМоисеев
>hVostt, сегодня, 10:45 [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>();
13 июл 18, 17:10    [21569563]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 27207
ВМоисеев
С Entity и списком сущностей работает класс панели (UserControl), там они и определяются. И Entity не выносится за пределы панели.

Простите, а что Вы в базе храните?
13 июл 18, 17:17    [21569592]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 8 9 10 11 12 13 [14] 15 16 17   вперед  Ctrl
Все форумы / WinForms, .Net Framework Ответить