>>234622688 Но ведь он самый медленный. getQux() вычисляет вес твоей мамки, и там тонны матана с использованием длинной арифметики. Даже при том, что нужно это далеко не всегда.
>>234623030 А дальше? Пикрил еще хуже чем первый вариант - ты всё считаешь по два раза. Сразу в return нельзя, нам нужно получить -1 если в одной из переменных ноль.
>>234623023 В случае если где-то нуль функция должна вернуть -1, очевидно же.
Второй от первого ещё отличается ранним выходом из метода при определённых условиях. Где-то это критически важно, где-то это избыточно. Если по перфомансу тут не ударит, то так лучше не делать. Ещё компилятор может заоптимизировать, но это уже совсем неосязаемые материи какие-то, чтобы о них дискутировать.
Первый пушить, но потом ещё джуна кадо будет научить адекватные ошибки возвращать.
>>234623410 > Только я б реверснул логику А зачем? && точно так же не пойдет проверять дальше, если сразу выхватит false. Возможно твой вариант даже медленней на пару наносекунд, т.к. ты ! добавляешь, лишняя операция.
>>234623517 Я даже не посмотрел, что за язык, если честно. Думаю, для иллюстрации это не имеет значение. Я на своём C# точно то же напишу, символ в символ, но объявление метода функции другим будет.
Но если уж и правда в вопросе JS, то определённо брать первый вариант.
>>234623410 Ага, я не спорю, но я не байтоёб, тики проца не важны на своременных железкахз. Я только с точки зрения удобочитаемости смотрю. И мне удобнее смотреть в конец метода чтобы посмотреть, что функция должна вернуть, а в середине я увижу все отсекающие условия.
>>234622640 (OP) 0й вариант, эту хуету v8 разъебет что-то типа варианта 1 или 2. А читаемость кода сейчас гораздо важней чем все эти скорости хуерости. Хотя, к слову, кто тут топит за скорость, это блять javascript, вы бы еще на basic или php пример привели каких-то мат. вычислений. Там где нужна скорость современные хипстеры юзают Go или Rust, ну кое-кто альтернативно одаренный D, старики C++, ну а глянцевые яблочники будут топить за swift-о парашу. Кто-то из девопсов скажет что это все хуйня и это можно напетлять на питоне или руби и будет также быстро ебашить как компилированное, но правда в том что кого ебет какой язык ты юзаешь, решил проблему, денежку получил покрупнее и побыстрее - и заебись, а все тех. долги уплатят пользователи конечные и компании которые крутят железо
Что-то меня вообще не туда понесло, ну, я просто оставлю эту шизу здесь
>>234624161 >А читаемость кода сейчас гораздо важней чем все эти скорости хуерости. Это так, потому что большая часть кода однохуйственно транспилируется бабелем.
>>234624054 >ему вроде как надо На самом деле деле тред навеян выбором между 2 и 3 вариантом, т.к. в реальной задаче оно выглядит скорей так getQux(getBaz(getBar(getFoo()))), и все нужно проверить на трушность прежде чем тащить дальше. Так что варианты вроде >>234623916 не очень применимы, несмотря на элегантность. Ну да хуй с ним - так зато тред живей получился.
>>234623754 Мля, забыл умножение и, в следствие, data: 1 при инициализации редюсера. Но, думаю, и так ясно. Тот-же вариант, но с лодашем и более упорото:
>>234624347 >в реальной задаче оно выглядит скорей так getQux(getBaz(getBar(getFoo()))) Если кто-то в реальной задаче такую ебанину напишет - его выпнут нахуй в тот же день.
>>234622889 Ой, типичные рассуждения джунов о скорости. Скорее всего тебя никто не просит писать код, чтобы экономить милисекунды а ждут читаемый и понятный код. Вторый и третьй вариант - пиздец, кровь из глаз.
>>234624214 ОП интересуется на что дрочить, на читаемость или на "скорость". Хотя как вариант, я бы предложил вариант где какая-нибудь срань делается вроде обхода 10k елементов DOM и обновляются их коррдинаты, и варианты где используются разные сахарные либы типа jQuery - они здорово сокрощают код, но как заметил один из двачеров - ipad v4 уже не берет без лагов порнхаб хотя я вангуют это связано больше с тем что там прелоадится хуева туча превью параллельно, а еще очень сложный трекинг который по дрожанию курсора может посчитать пульс твоего ануса.
>>234624347 Вообще, если считать число ветвлений и тд, все три хуйни неоптимальны. А то, что ты написал, совсем чушь, если опираться на условия оп-поста
>>234624417 IMHO, это даже более болезненно выглядит чем любой из оригинальных примеров, если есть операция которую не нужно заворачивать во все эти ебучие врапперы, то лучше линейно ее посчитать, хотя твое решение отлично сработает в условиях когда нельзя блочить main-thread.
1. Пишешь самый простой, читабельный вариант 2. Сдаешь клиенту 3а. Он говорит: мне норм. -> ПРОФИТ 3б: Он говорит: медленно 4. Оптимизируешь код, стараясь все же не писать совсем сранину 5. Профит
>>234624622 То что я описал прекрасно вписывается в варианты два и три. См. >>234624661. Первый вариант был больше для лулзов. И я очень разочарован что выбирают в основном его. Сраные быдлокодеры, из за который я не могу на своём MMX166 двачи скролить.
>>234624699 Ну это так, упороться. А если точнее, это универсальный вариант когда количество операций неизвестно. У ОПа 4 операции - второй вариант заебись.
>>234624869 Хотел уже спиздануть, где это пример на неизвестное количество операций, а потом вспомнил всякие графы для обработки видеотракта в веб-интерфейсах...
>>234624347 > все нужно проверить на трушность прежде чем тащить дальше > Так что варианты вроде >>234623916 не очень применимы Как раз-таки применимы. Если прилетит любое не трушное значение в одной из функций, типа NaN или 0, или undefined, вернется -1.
>>234624503 Меня по молодости отучали от использования словарей и множеств для быстрых лукапов, все свои маняоптимизации на операции квадратичной сложности переписывал. В бизнес-логике действительно не место вообще любым оптимизациям, один хуй в микросервисной залупе процессор 95% времени перемалывает JSON'ы между микросервисами.
>>234622640 (OP) Все хуйня. Если функции возвращают смешанный тип данных, то falsy-проверка не подойдет, потому что 0 ее провалит. Если только числа, то умножение и так даст 0 и можно обойтись || -1 в конце. Скорее всего это можно свести до изящного однострочника. Алсо, какой нахуй var в 2к20?
>>234624766 А ты замерял реальную разницу в производительности до и после? Это классическая болезнь новичков - пытаться везде все оптимизировать, не померяв. А потом оказывается время въебано, быстрее не стало, а читать ебанешься.
>>234625593 Всем насрать на твою читаемость, тебе платят за то чтоб софт работал быстро. И когда появится конкурент который не поленится заморочится с микрооптимизациями - ты пойдешь дворы мести на морозе.
>>234625709 > чтоб софт работал быстро Это отдельный таск.
А вообще, мы о js. Какая скорость? Боишься стек лишний раз дернуть? Замерь как-нибудь разницу в подходах и погляди насколько она заметна по сравнению с другими инфраструктурными расходами в твоем проекте
>>234622640 (OP) Первый нормальный, но я бы сделал единственный возврат. Второй плох хотя бы множественными возвратами. Третий вообще ужесен из-за вложенности условий. А то что он медленный - мне вообще похуй. мимо тимлид ява-котлин
>>234625709 Допустим мой код выполняется за 5 мс в пике, а у оптимизатора за 0.05. Разница в сто раз, но никто это не замечает, потому что фрейм все равно 16.6.
Только вот первый код легко писать, расширять и поддерживать, а во второй мало того что писался в два раза дольше, так еще и поддерживать никто не сможет кроме автора.
>>234625881 Но ты ведь не знаешь че там в функциях проворачивается, пидор! Если каждая из них какой-нибудь фрактал возвращает, то эти массовые возвраты съедят ресурсы тупо. Вас пидоров в жопу ебать надо на красной площади, чтоб мозги включали хоть иногда!
>>234625876 >А вообще, мы о js. Какая скорость? В современном мира в тормозящий пекарнях чаще всего виноват именно жс(ну и игори, конечно), как ни странно. На беке-то хуле - будет нужно, раздробят на микросервисы, и растащат по инстансам. А фронт так и продолжит нагибать машины пользователей.
>>234625945 Практика иногда показывает обратное. Гугл потому и победил в войне браузеров, что понабрал олимпиадников, и своими микроптимизациями(эк чо удумали, жс на лету оптимизировать) нагнул все остальные браузеры по производительности. И не надо про навязчивое впаривание. Это тоже фактор, но не критичный. Яндекс браузер вон соснул, хотя и пытался лезть везде где может.
>>234626211 Хуй с пальцем сравнил. V8 гипероптимизировали потому, что видели, что веб усложняется и ему эти оптимизации критически важны. Это было серьёзное инфраструктурное улучшение, а не микрооптимизация в приватном методе.
>>234626494 А что тебе смущает? В жс нередко используется длинная арифметика, есть куча либ для этого. Да даже целый жанр браузерок только на ней и живущих есть - idle\clicker\incremental, дробящие цифры с сотнями нулей.
>>234627050 Ну, не то чтоб нечитаемо, но нужно потратить пару секунд чтоб понять что происходит. Все остальные варианты пробегаются галазами не включая мозг.
>>234627185 А зачем? Нет, и ничего не имею против когда нужно включить мозг и понять какую-то полезную микрооптимизацию. Но тут не тот кейс. Ты сократил функцию, и теперь она работает точно так же, но читать её на пару секунд дольше. В чём смысл?
>>234622640 (OP) Офк третий он же идеально совмещает компактность и остается оптимизированным. Я бы еще больше его сократил типо if (var foo = getFoo()) хз как в JS можно так или нет.
>>234622640 (OP) Если в getxxx() происходят какие-то тяжёлые операции, то третий вариант оптимальный по скорости, и следует использовать его. На множественные ретурны пох, пока метод влазит в один экран, а клиенту вообще по барабану как там код выглядит.
Лично мне больше нравится вот такой подход с ленивыми вычислениями >>234623547, если язык позволяет такие конструкции
>>234622889 Если у тебя где-то жирное вычисление, то ты не туда воюешь. Ты должен сделать для него адаптер с лейзи-лоадом, а не надеяться на то, что все знают что можно дергать а что нельзя.
>>234628969 а одним reduce никак не обойтись? че-то типа: return [getFoo, getBar, getBaz, getQux].reduce(acc, curr => { let x = curr(); return x ? acc ⋅ x : -1; }); хз, js не знаю
>>234622640 (OP) Сука, как же заебали уёбки, не соблюдающие микропаттерн no-else-return и пишут бля: if <clause> { return x; else { return y; } УЁБКИ СУКА ЕБАНУТО-ГОВНО-ПИДОРСКИЕ, НАХУЙ ВЫ ЭТОТ ELSE ОСТАВЛЯЕТЕ, МУДЕНИ, НЕ ДЕЛАЙТЕ ТАК ГОНДОНЫ СУКА ЁБАНЫЕ, Я ВАС НАЙДУ И ОБОССУ
>>234634187 >>234634227 Не, это никак не помогает. А у меня — помогает поочерёдно вызвать функции не снимая свитер не повторяя аналогичные участки кода.
>>234635285 >>234635632 >Миллионы умных людей понимают, что они люди, и пытаются спасти код от самих себя. >Мамкина радость пытается играть в непогрешимых профессионалов.
>>234633659 Это я тебя обоссу, мудила. Выход из функции должен быть в конце. Бранчинг должен делаться средствами if else. А ты предлагаешь в return впихнуть и то, и то, ради экономии 5 символов. Пошел нахуй
>>234636535 Нормальные языки имеют Maybe/Optional для сообщения об отсутствии результата вместо -1 и монадные конструкции, которые позволяют спрятать эти проверки
>>234636802 А чего ты взял что getFoo() никогда не должен возвращать нуль? Это корректный результат, просто в данном контексте он не нужен. Может тебе еще и Array.length должен эксепшоны кидать начать на пустом массиве? Вот тогда заживём!
>>234637698 >Ноль же Ну вот если getFoo() вернёт ноль, то твой код сделает хуйню. Почему она его вернёт - тебя ебать вообще не должно. Может это обёртка вокруг Аrray.length. Если там нуль - то эта функция должна сфейлится, а не какая-то другая. Можно еще подискуссировать как именно она должна это сделать - вернуть null, -1, родить экспеншон, обернуть свой высер в опшионал, ватэвер. Но вот это >>234636403 говно тут в любом случае мимо кассы, т.к. не делает то, для чего эта функция вообще нужна - отловить тот сраный ноль.
>>234638940 Тайпскрипт для мартышек копипастящих код со стаковерфлов. Нормальным программистам не нужна искусственная(не помогающая компилятору) типизация, они и сами помнят что писали две строчки назад.
>>234639198 В том, что код умещается в две строчки, а если пожертвовать читаемостью, то в одну?
Алсо забыл упомняуть, что без приведения кода гет-функций и их трудоёмкости вопрос ОП-поста имеет значение только лишь с эстетической точки зрения. Все эти "а что если гетХуй вычисляет твою мамку" - пустопорожние выдумки находу.
>>234639557 >>234639602 Тогда каким образом была определена скорость выполнения функция? В таком случае, если так важна скорость, где приведено сравнение трудоёмкости и скорости выполнения гет-функций для кода на втором и третьем скрине? Ведь от этого зависит порядок выставления иф-стейтменов по-отдельности или в ветвлении.
>>234623206 >ты всё считаешь по два раза Ну ты и ебалай, конечно. Слышал что-нибудь про ленивую логику? А про компиляторную оптимизацию? Кэш, там, например?
>>234640141 >Тогда каким образом была определена скорость выполнения функция? Она больше нуля. Даже если там function getFoo() { return 1; }, то всё равно нужно со стеком как минимум поебаться. Зачем это делать? Тратить тики на пустом месте? Читаемость? Чем тебе второй вариант не читаемый?
>В таком случае, если так важна скорость, где приведено сравнение трудоёмкости и скорости выполнения гет-функций для кода на втором и третьем скрине? Резонное замечание. Для простоты будем считать что все они выполняются одинаковое время. В любом случае оно больше нуля.
>>234640450 Слышать что-нибудь о том, что вызов функций не бесплатный? Даже если там закешированное значение. Компилятор это может заинлайнить... а может и нет, особенно в случае с жс, который оптимизирует по велению левой пятки.
>>234640141 Да пусть даже геты одинаковые по сложности, суть вопроса в том как запилить читаемый элегантный код, который при первом попавшемся нуле скипнет остальные вычисления. Или я не прав?
>>234640504 Школьник. Второй вариант менее читаемый. Пусть даже незначительно. Разраб на него потратит на несколько секунд больше. Так вот это более важно чем экономия на спичках ресурсов. Поэтому первый вариант лучше
>>234641411 Сложна, нипонятна. Как ассемблерный код с этой хипстотой выглядеть будет? Заоптимизирует до уровня как на втором\третьем пике ОПпоста(если его на сях переписать, есесно)?
>>234641697 Какая нахуй разница? Даже если оно не одинаковое, то после перестановки вызовов в порядке возрастания сложности логика не изменится. Вообще никак.
>>234641644 питон не компируется, так что вопрос не совсем корректный. Если первая функция вернёт 0, reduce прогонит цикл по всем остальным элементам где будет проверка и присвоение в результат нуля.
>>234641999 Есть же конпеляторы и к петону. Хуй знает правда насколько они юзабельны, никогда не пользовался.
Вообще вопрос был в том, сколько в этой шляпе оверхеда. Ну хорошо, если переписать 2й пик на питоне, и замерить обе функции, будут ли они выполнятся одинаковое время, или ламбда замедлит?
>>234622640 (OP) Первый вариант, только не считай значения сразу, а делай lazy-переменную, например, в скале это lazy val foo = getFoo(). По-моему в вашем петушином жс-углу есть варик сделать такую ленивость из коробки. Или можешь сделать npm install monet и переписать цепочку ифов на монаде Maybe; без синтаксического сахарка для монад это будет выглядеть, как цепочка вызовов функций, но тут уж увы. Короче, заканчивай жрать говно и вкатывайся в бэкэнд на любом нормальном языке.
>>234642345 Да я не придираюсь, мне просто любопытно насколько хорошо оно оптимизируется. Что в ЖСе функциональнища оптимизируется хуёво я знаю - тут это всего лишь сахар поверх императивщины, лишний слой абстракции, и всё эти мап рудьюсы, и прочья малафья хипсторская всегда будут сосать и дедовского цикла. А насчёт питона не знаю, вдруг он одинаковый байт генерирует. Вот и полюбопытствовал.
>>234643099 Это в петухоне вызовы функций, а в функциональных языках это неявное создание замыканий, потому что в конструкторе списка будет приём не по значению, а по имени. Это я про call-by-name и call-by-value, если что.
>>234622640 (OP) На всех пиках говнокод какой-то. Почему ты не передаешь foo, bar. baz в качестве аргументов, а пытаешься вычислять их прямо в функции. Если ты уж решил лезть из функции во внешний скоуп, почему не проверяешь что getFoo сущестует в скоупе? Почему ты так боишься вернуть NaN из функции, вместо этого возвращаешь -1. Это противоречит любому здравому смыслу. Кинь уже тогда ексепшен если так хочется.
>>234622640 (OP) второй запушу. по причине что легко читается и удобно поддерживается. можно убрать переменную а можно добавить новую удобно редактируя при этом код
>>234643271 >А в питоне ведь генераторы есть. Если в конструктор генератора передавать, тоже сначала всё вычислится?
что значит в конструктор генератора? Генератор тебе через yield скармливает последовательность без построения списка зарание, можно так сделать. Чтобы сделать lazy вычисления, тебе все равно надо с указателями на функции работать
>>234643214 >Это в петухоне вызовы функций, а в функциональных языках это неявное создание замыканий, потому что в конструкторе списка будет приём не по значению, а по имени. Это я про call-by-name и call-by-value, если что.
>>234643852 Хорошо жить в манямирке с понями. У меня на проде есть даже код который не только эвалит сторонний код, а еще и прогоняет его перед этим через пачку регулярок, переписывая на лету.
>>234637354 Если в данном контексте тебе 0 не нужен, то результатом будет None / Failure, если 0 тебе нужен, то результатом будет Some(0) / Success(0).
надо представлять себе этот код в динамике. ну в смысле что он будет расширяться и редактироваться. очевидно то тут соревнуются 1 и 2 варианты. 1 это классический пример новичка перфекциониста который думает что чем меньше строчек тем лучше. но тут допущена типичная ошибка объединения различных хуетенек общим поведением. потом когда возникнет потребность сделать точно такую же хуетеньку,но ЧУТЬ другую, в варианте 2 это сделать легко. можно вернуть вместо -1 что-то другое или добавить какую-то логику перед return. в первом же варианте это невозможно кроме того добавление новых переменных будет горизонтально увеличивать строку с if() в варианте 1, а в варианте 2 это просто по вертикали добавится новый блок,что удобнее. кроме того если перед return foobar... добавится какая-то логика и функция станет очень большой,ключевой return в варианте 1 окажется в середине большой функции,чего я не люблю, а в варианте 2 он будет всегда внизу. единственное до чего можно боебаться в вариант 2,что там -1 нужно бы в контстанту вынести
>>234647365 Зато использование неподходящих устаревших говноинструментов делает тебя студентом-первокуром, причем довольно тупым, или залетным вкатчиком с завода. Не нравится иде - берешь атом/вскод, на край саблайм, или вообще вим/емакс.
>>234648938 Массив тут только для лаконичности и читаемости кода. Можно сделать прлще в данном случае: просто пометстить применения функции в оператор умножения. V8 достаточно умен, чтобы понимать, что a * 0 = 0. Если хоть одно из примений функций редуцировалась в 0, то последующие применения в цепочке считать бессмысленно, т. к выражение всё равно будет равнятьсч нулю.
>>234622640 (OP) Лучший тот где лучше читаемость . О оптимизации нужно думать только тогда когда есть такая потребность . Правило 90% -10%. По этому более читабельный код номер 1.
>>234648618 Автоприведение к булу. В случае с числами 0 это false, всё остальное это true. Не считая всякой экзотики - NaN станет false, Infinity станет true. Это бесконечный результатов факапов если ты не понимаешь что как кастится. Ну и дальше ! выворачивает результат. Т.е. на нуле код уходит в return, во всех остальных(кроме всякой нех) случаях продолжает работать дальше.
>>234650240 Есть, называется "явное лучше неявного". Я хочу видя использование переменной четко понимать что в ней может содержаться и какие у нее могут быть свойства, а не так что можно передать собаку в картофелечистку и компилятор нихуя не пукнет в ответ.
>>234650244 Ты конечно жирный, но тут верно подметил >Рабочий То есть не выполняющий ПОСТАВЛЕННУЮ задачу, а РАБОТАЮЩИЙ хоть как-то. То что у тебя там слоны с вилками складываются тебе конечно похуй, понимаю, тебе нужно чтобы запустилось и можно было коммитить.
>>234650858 Сразу видно студня, который больше лаба2.js ничего в жизни не писал. Завтра тип, который приходит в переменную из функции, немного поменяется, а твой говнокод с УДОБНЫМ НЕЯВНЫМ ПРИВЕДЕНИЕМ сожрет и не подавится, пока на проде хуйня не вылезет где-нибудь вообще в другом месте.
>>234650991 Если какая-нибудь мартышка поменяет тип возвращаемый функцией без проверки где эта функция вообще используется, то сначала всё в любом случае пойдет по пизде, а потому это мартышку будут долго и смачно ебать в задницу.
Хорошо что в реальном мире на нормальных крупных современных проектах сразу берут язык со статической сильной типизацией, и описанная ситуация с еблей мартышки невозможна в принципе, потому что такой код тупо не скомпилится, а ИДЕ с компилятором мартышке еще и подскажут что он забыл поправить один из 50 кейсов.
>>234651544 Ты недооцениваешь мартышек. Запушит некомпилящийся код без задней мысли, и прод вообще встанет раком, из за того что где-то формочку перекосило.
>>234651883 >Запушит некомпилящийся код То есть в твоем манямире в CI/CD не будет банальной проверки компиляции, зато будет инстантный пуш на прод? Орунах.
>>234656716 Проебался, там в run еще проверку надо добавить, function run(func) { if (!badVar) return 0; var temp = func(); if (!temp) { badVar = 0; } return temp; }
>>234660852 Питониста - это бесполое название программиста на питоне, долбоеб, neuter gender noun, оно не указывает на пол человека и имеет средний род.
>>234662331 Чел, я вообще ДС питонист, и на жс даже писать не умею, что не значит что я не могу прочесть твой говнокод.
Сахар нужен потому, что ты не один работаешь, дебич, твое говно ещё читать кто-то будет и материться.
А про фреймворки вообще не понял, знание необходимых фреймов - это половина знания языка, кому ты нахуй со своим голым синтаксисом нужен. Синтаксис и макака выучит... Ах да Прости. Мы про жаваскрипт. Тогда все верно. Требовать от вас знания фреймов - это уже уровень сеньора наверное.
>>234662662 Вот, я и говорю, что хорошо, что я ушёл от всего этого ЧСВ-говна. Кто сколько фреймворков выучил, кто макака, а кто нет. А вы там дальше варитесь в своём JS-Pytoohon говне, меряйтесь длинной лычек. И нет, я не слился из профессии. Кстати, самый быстрорастущий проект, который я видел, $10М+ за полгода с нуля, была написан с таким огромным болтом, положенным на best practice, что вы бы тут все охуели. 40 js файлов, подключемых к странице, которая грузилась 10+ сек. 2018 год. Не тралю. Так что думайте.
>>234663339 >чем функтор от промиса отличается Полезное знание для джуна, не поспоришь. Повезло пацану что не попал в вашу галеру адептов фп на js и не стал говноедом.
>>234663400 >Кстати, самый быстрорастущий проект, который я видел, $10М+ за полгода с нуля, была написан с таким огромным болтом, положенным на best practice, что вы бы тут все охуели. 40 js файлов, подключемых к странице, которая грузилась 10+ сек. Прохладная история, бро. Да, $10М - это что? Инвестиции, капитализация, оборот?
>>234661895 > TypeScript и Flow для кого изобрели? Для тех у кого память как у золотой рыбки, и кто без подсказок конпелятора не помнит что у них в переменных?
>>234663789 >Чистая прибыль. Твоя история всё холоднее и холоднее. B2C рынок я полагаю, и прямо вот за полгода? Полгода с чего? с первой строчки года? А команда сколько человек всего? 10м в год? Какая область то? финансы? Расскажи подробности какие-нибудь, интересно
>>234622640 (OP) В принципе, ugly вполне читаем, я бы его сделал. Другое дело что "по хорошему" - это tall, но тут есть нюанс: некоторым не нравится когда в функции несколько returnов
>>234663339 Да я троллю "уверенного мидла", который уверен, что в 2к20 использование редуса - это job security, лол.
Сейчас джуны такие мертвые петли умеют заворачивать, что охуеешь. К счастью, фундаментальных знаний это не добавляет, и конечно на той же математике такие спортсмены сыплются как груши. Но выебываться кодом сегодня - это просто нонсенс. Достаточно зайти и посмотреть решения с кодварс чтобы охуеть. Я сам оттуда регулярно код тырю.
>>234622640 (OP) Всем малолетним долбоёбам умничающим насчёт читаемости, чистоты, хуеты и прочей дерьмоты, по которой у долбоёбов принято оценивать код, я вам так скажу. У кода есть всего 2 критерия: производительность и отсутствие багов. Все остальное вторично.
>>234665584 проиграл с хардкор-чухана, в современнах командах: если твой код глючный или тормозной - это как правило, твоя проблема если твой код не читаемый - это общая проблема и тебя быстро выебут на MR'ах
>>234665816 >Все рынки b2c. B2B не существует. Решения принимают люди, а не компании. Псевдо-интеллектуальный высер с претензией на опыт и широну знаний.
>>234665800 >>234665702 Малолетним долбоёбам, которые высирают код на десятки мегабутов, используя полновесные либы для того чтобы загрузить картинку на сайте веб-брузера, не приятно.
>>234666463 ну давай, вот 2 решения. Подписка на музыку, 10 баксов в месяц, типа спотифай. Кол-во клиентов - миллионы пользователей. Система составления расписаний полетов для авиакомпаний. Стоит от 5000 до 50,000 в месяц в завимисти от размера флота. Кол-во клиентов - меньше 100.
Давай поясни что все пункты ниже для них будут одинаковые
1) реклама/маркетинг 2) команда и модель продаж 3) команда поддержки 4) account management 5) архитектура системы (tenancy, scaling)
>>234667238 По сути погромисты в моей сфере умеют читать ассембли код и никто не усирается по поводу "читабельности" в принципе. Код должен быть производительным и без багов, всё. "Читабельность" для обезьян, которая программистами не является. Поэтому ваш читабельный код, скрытый под тонной абстракций и полновесных либ, дохнет на многоядерных машинах и жрет оперативу как не в себя.
>>234668149 Сразу видно тупорылого зумерка, который не знает что компилятор генерирует. Все современные цпу с начала нулевых работают в SIMD для максимальной производительности. Для этого нужно менять расположение данных в памяти из AOS в SOA. Компилятор в принципе не может это делать, это нужно делать руками.
Так же компилятор не может оптимизировать кэш миссы, если у тебя есть какой-то тяжелый луп и вместо того чтобы дать цпу доступ к последовательному массиву данных в памяти чтобы он грузил все это дело в свой внутренний кэш, ты постоянно гоняешь его к оперативке внутри лупа.
Это простейшие вещи, которые нужно оптимизировать руками. И это я еще не затронул сложность с паралельными тредами, что тоже нужно делать руками.
>>234668700 Если бы производители железа такой же логики придерживались, у нас бы происходил даунгрейд с каждым годом. Гордиться зряплатой за говнокод, а сейчас 98% кода это тормозящий забагованный говнокод, удел недалеких обезьян, которых порешает очередной выход бесполезного фреймворка на жабаскрипт.
>>234667130 Естественно, почти всё будет разное, кроме пятого.
1. В одному случае ты можешь стрелять из пушки по воробьям, запуская рекламу в телеге и смотря конверсию. В другом надо выцеплять лично тех, кто получит выгоду финансовую от внедрения вашего решения. 2. Само собой, под разные задачи, разная команда. 3. В первом случае надо делать расширяемую и заменяемую команду. Во втором, ребят, которые шарят в бизнесе клиента. 4. Бизнесу надо чтобы всё само делалось. Придётся за бизнес вносить самостоятельно данные в систему и вообще быть его секретарём. Для аналоги спотифай вообще не нужно, поставил - должно работать.
Контрпример Но вот в чём дело, эти все отличия не важны. Вот, скажем, поиск невест для состоятельных людей - это B2B или B2C? Вроде, B2C. Много ли в нём киентов? Да несколько тысяч. Он больше похож на систему управления расписаниями самолётов, в плане продаж, или на спотифай. Думаю, что на систему. То есть, способы маркетинга не являются определяющими того, какой у нас биз B2B или B2C.
>>234668913 Чел, ты рогом уперся и не можешь понять что речь идет о разных задачах. В вебне решает скорость и дешевизна разработки. 99.99999% проектов это говностартапы которые хотят опробовать свою говноидею. И могут позволить себе переписать проект с нуля, если он выстрелит. На продуктах ситуация возможно слегка другая. Не надо это сравнивать с написанием кода под железяки.
Если стартап не полетит, да и похуй. Потеряем часть клиентов, потом допилим или затестим гипотезу, а потом запустимся под новым бредном. Если железяка не фурычит или драйвер кривой, то всё, пиздец компании, которая это допустилка. Аналогия вв реальном мире: можно перепутать сдачу при покупке трусов, но нельзя перепутать педали при производстве автомобиля.
>>234670373 Я в полном ахуе с вас динамобляди - списки функций вы значит итерируете, а блять вместо адекватного типа ошибки вы возвращаете ёбаный -1 как в старом добром-ёбаном 1969 году.
Если три вложенных функции вернут результат 1 и одна -1, то возврат основной функции будет неотличим от ошибочного, а значит сама функция говно и все 3 реализации не пройдут код-ревью.
>>234670836 >Если у тебя f4 вернет 0, то ты зря тратил процессорное время на 2 операции умножения Ну на это у меня нечего возразить, разъебал по фактам
>>234670783 не надо додумывать, с чего ты решил что 0 не корректный результат функции? из оп поста очевидно, что вопрос в том что функции тяжелые и не надо их вызывать если уже результат 0. писдос
>>234670836 >Если у тебя f4 вернет 0, то ты зря тратил процессорное время на 2 операции умножения вангую, это быстрее чем создавать экземпляр списка, добавлять в него элементы, а потом по индексу получать значения