169 похожих чатов

Ребят, какие есть техники в программировании для упрощения читабельности длинного

if/else кода? Вот к примеру есть формула где от результатов одних расчетов идем в различные ветки и ветки достаточно длинные и сложные. Ориентироваться в этом реально сложно сейчас

11 ответов

14 просмотров

Выносить в методы наверное, чтобы на верхнем уровне не было кучи отвлекающих деталей

Kirill-Kulikov Автор вопроса
Andrei Kurosh
Выносить в методы наверное, чтобы на верхнем уровн...

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

также если условия длинные то круто выносить их в отдельные человекопонятные предикаты

если можно как-то распределить проверки по группам и декомпозировать - тоже круто

Kirill-Kulikov Автор вопроса
Vyacheslav Гайсин
также если условия длинные то круто выносить их в ...

ну с учетом того, что на диаграмме прямо так и написано if (a < b), то в коде я решил так и оставить. пока что сделал все функции чистыми (до этого все бралось из внешнего скоупа), и вынес все условия из функций на ружу чтобы стало легче читать и не приходилось проваливаться чтобы понять что происходит. Стало лучше

Воспользуйся техниками функционального программирования. Каждый блок сделай функцией. чистой функцией ход выполнения программы - последовательность функций, каждая следующая получает аргументом результат выполнения предыдущей - чтото типа такого получится. читабельность отличная! pipe(fnBlock1, fnSelectBlock2, fnBlock2, fnSelectBlock3) а если и методы одинаковые будут у блоков, то ваще красота

Kirill-Kulikov Автор вопроса
Alexey Turdakin
Воспользуйся техниками функционального программиро...

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

Kirill Kulikov
не уверен что именно это хорошо ляжет. у меня дале...

const pipe = (x0, ...fns) => fns.reduce((y, f) => f(y), x0); const fn1 = (x) => 5 + x const fnDiv = (x) => { console.log('div', x) return 0 } const fnMulti = pipe(1, fn1, fn1, fn1) const fn2 = (x) => x > 10 ? fnDiv(x / 2) : fnMulti const endFn = (x) => console.log('end, res = ', x); const res = pipe(1, fn1, fn2, endFn) не нужен - не передавай

Kirill-Kulikov Автор вопроса
Kirill Kulikov
изучу, спасибо

а лучше вот так выбирать const pipe = (x0, ...fns) => fns.reduce((y, f) => f(y), x0); const fn1 = (x) => 5 + x const fn21 = () => console.log(' > 10') const fn22 = () => console.log(' < 10') const endFn = (x) => console.log('end, res = ', x); const conditionFn = (x) => x > 10 const selectFn2 = (conditionFn) => (f1, f2) => (x) => conditionFn(x) ? f1 : f2 const mySelectFn2 = selectFn2(conditionFn) const res = pipe(1, fn1, mySelectFn2(fn21, fn22), endFn)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта