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

Можно ли заменить оператор иф и никогда его не использовать?

12 ответов

18 просмотров

можно, но зачем.

Dmitriy-code Автор вопроса
Sergey P
можно, но зачем.

Почему так не сделают ООПшники?

Dmitriy code
Почему так не сделают ООПшники?

в smaltalk if был функцией вроде.

если у тебя if для вариантов, то лучше не надо.

Sergey P
в smaltalk if был функцией вроде.

технически там and и прочие ifTrue были сообщениями

Dmitriy code
Почему так не сделают ООПшники?

я не помню у кого но видел доклад где чел пытался SOLID через математику обосновать. Упорото немного но в целом поведенческие паттерны они как раз про змену ифов )

Dmitriy-code Автор вопроса
Sergey P
я не помню у кого но видел доклад где чел пытался ...

Да, если бы ифы развивали, они бы не хуже ООП были по сложности

Dmitriy-code Автор вопроса
Sergey P
че?

ООП это механизм. Ифы тоже. Зачем им заменять и конкурировать друг с другом? Сделали бы что то новое.

Dmitriy code
ООП это механизм. Ифы тоже. Зачем им заменять и ко...

тут на самом деле такой момент. ифы, циклы и другие управляющие структуры - это то что называется структурным программированием. Напомню что до них надо было делать джампы к инструкциям. Это не просто "механизм". Это то что появилось в начале 60-х. Читать про всякие goto considered harmful. ну то есть оригинальную публикацию Дэйкстры. У if-ов нет особо проблем, ты можешь мысленно заменить их на функции. Потому что по факту оно эквивалентно. Ифы не особо увеличивают сложность. Если взять какой-нибудь groovy то вообще ifReplacement (predicat) { println "true" } { println "false" } // тоже что и ifReplacement(predicat, whenTrue, whenFalse) то есть чисто вопрос синтаксиса и восприятия. "сложность" и то с чем можно спорить это стэйт. То есть оператор присваивания это то что резко повышает сложность систем ибо вводит понятие времени. Нам теперь не все равно что было до или будет после. То есть скажем циклы, не просто так же говорят что проверку границы цикла пролюбливают чуть ли не в половине случаев, благо теперь есть итераторы и прочие forEach которые уменьшают такие риски. Что до ООП - тут вопрос как на это смотреть. Если смотреть с позиции simula то это лишь скоупы в контексте стукрутного программирования. Ничего принципиально нового даже на момент 68-ого года, просто удобно сделано. А если брать всякие смолтоки то там идея была в другом - у тебя есть объекты, у объектов есть внутренний стэйт и они могут посылать и принимать сообщения (как компьютеры в сети). Эта идея не конфликтует с идеями ФП или структурного программирования, она их дополняет. По факту "ООП" умерло примерно тамв 70-х и в целом хер с ним. Вместо него можно спокойно оперировать понятием экторов а экторы уже про модель распределенных вычислений.

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
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
Карта сайта