metaclass: (Default)
[personal profile] metaclass
http://jakobz.livejournal.com/249050.html

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

А то напихают sleep(1000) в качестве средства синхронизации, а потом запускается это все на каком-нибудь убер-быстром или убер-медленном железе и оно все дохнет в необъяснимых мучениях.

Впрочем, по ссылке "говнокод" - это код без ООП и паттернов, а они откровенно нахер не нужны в большинстве случаев.

Date: 2015-03-11 09:00 am (UTC)
From: [identity profile] plumqqz.livejournal.com
его проще выкинуть и сделать заново, чем исправлять.
Говнокод - это не код, имманентно говенный, но результат алхимического брака платоновских идей разработчика и заказчика. Ну то есть второй что-то там нарассказывал первому, первый преломил в своем кристалле сознания это понимание как-то по-своему, накалякал, показал второму, второй посмотрел, ужаснусся, внес уточнения, описал их как мог первому, который снова понял в силу своего разумения, что-то написал, показал - и так асимптотически они и приближались.
Так что выкинуть и сделать заново может и можно, кто бы спорил - только вот а)без говнокода это все равно не получится б)при изменении требований см. абзац выше.

PS ООП и паттерны действительно обычно нахер не впились.
PPS Вырожденные случаи с неправильным использованием апи и т.п. рассматривать не будем.

Date: 2015-03-11 09:35 am (UTC)
From: [identity profile] binf.livejournal.com
Вот правильно. Говнокод - это прототип в некоторой степени приближенный к желаемому результату. Работающий синхронно прототип можно рефакторить под многопоточность. В слуае сабжа - ачинхронные монады, Async.Sleep вместо sleep, ReadFileAsync вместо ReadFile. Чтобы рефакторить неработающий (не)говнокод , надо сначала сделать чтобы он работал

Date: 2015-03-11 09:38 am (UTC)
From: [identity profile] metaclass.livejournal.com
Async.Sleep это какое-то феерическое безумие :)

Date: 2015-03-11 09:43 am (UTC)
From: [identity profile] binf.livejournal.com
это тока так кажеца)). В F#-пе в момент выполнения Async.Sleep асинхронноу вычисление можно абортировать с помощью CaneletionToken, а просто слип - нельзя

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 6th, 2025 08:29 pm
Powered by Dreamwidth Studios