Главная Настройка Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски


[Ответить в тред] Ответить в тред



<<
[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 50 | 6 | 30

C# if-less Аноним 17/03/18 Суб 21:33:19  1157597  
image.png (229Кб, 870x450)
Дваче-программаче. Я вот тут катаюсь в си-шарпе и услышал, что некоторые ребята программируют не используя оператор if. Слушал в пол уха, речь шла о логике классов и вызовов. Вот хотел бы найти русско-язычные источники по if-less programming. Кто знает
Аноним 17/03/18 Суб 21:33:51  1157598
>>1157597 (OP)
(палец соскользнул) Кто знает источники, мб кто умеет это делать?
Аноним 17/03/18 Суб 21:44:26  1157604
>>1157597 (OP)
Всё, что у тебя в теле if-else блоков выносишь в разные классы, эти классы реализуют один интерфейс, конкретно один метод. Этот метод ты и вызываешь вместо if-else, а в исходный метод передаешь объект типа тот-интерфейс.
Аноним 17/03/18 Суб 21:57:39  1157614
>>1157604
на каждый if-else свой класс?
Аноним 17/03/18 Суб 22:02:07  1157617
>>1157614
Ну, смотри. Вот есть у тебя код:

if ("Doge".Equals(name)) { / gav gav / }
else if ("Pepe".Equals(name)) { / qua qua / }


ты делаешь классы

interface IAnimal
class Doge : IAnimal
class Pepe : IAnimal

У них реализуешь метод Say(), у каждого свой и свой if заменяешь на

animal.Say()

А в исходный метод передаешь IAnimal animal
Аноним 17/03/18 Суб 22:27:55  1157644
>>1157617
и я даже это смогу сделать if-less?

if (booki.similary(booki.shings, shelfi.booksample.shings) == true)
{
shelfi.bookList.Add(booki);
booki.placed = true;
break;
}
else continue;
Аноним 17/03/18 Суб 22:32:40  1157649
>>1157644
>буки
>шельфи
Аноним 17/03/18 Суб 22:35:12  1157651
>>1157649
все верно, делаю проверку достаточно ли книга похожа над другую книгу
Аноним 17/03/18 Суб 23:01:20  1157667
>>1157644
>== true
Это зачем это так делать?
Аноним 17/03/18 Суб 23:03:54  1157669
>>1157667
звучит так, как будто знаешь альтернативу, я угадал?
Аноним 17/03/18 Суб 23:08:11  1157672
>>1157669
Знаю. Просто убрать процитированное мной часть. Если функция уже и так true/false вернула, нахера ещё раз с чем-то сравнивать для получения, опять же, true или false'а?
Аноним 17/03/18 Суб 23:49:05  1157707
Чем if-ы так плохи, что от них надо избавляться?
Аноним 18/03/18 Вск 00:22:26  1157742
>>1157707
Как ты во все ифы сразу (ну или ифы которые проверяют вещи одной категории) добавишь например логгирование, или трейсинг.

Тем же плохи, чем goto вместо функций. Или структуры вместо объектов. Или инклюды вместо модулей.
Аноним 18/03/18 Вск 02:25:06  1157863
>>1157667
Может у него similary возвращает bool?
Аноним 18/03/18 Вск 07:13:33  1157901
>>1157863
Ну так она у него булеан и возвращает, да. Иначе бы он не с true сравнивал.
Аноним 19/03/18 Пнд 20:48:33  1159158
>>1157742
чем goto плох) критика goto - признак конченного дебича. За 10 лет работы с унаследованным кодом ни разу не видел гоуту, хотя сам иногда использую. Все это каргокульт, люди просто слышат звон, но не в состоянии уяснить что в этом плохого. Постоянно коллег про гоуту спрашиваю и ни один (даже с гуглом) ничего вменяемого ответить не может. В основном гоуту-маркер, умный программист будет долго думать и скажет что где-то слышал про то что лучше не использовать, но почему не знает. Тот кто прыгает по верхам и не имеет глубины ума тот яростно доказывает вред гоуту.
Аноним 19/03/18 Пнд 21:02:26  1159164
>>1159158
Вот и выросло поколение жертв егэ, не нюхавших всяких кувасиков.
Аноним 19/03/18 Пнд 21:26:03  1159181
> мелкобуквенный дебил доказывает, что goto заебись

Вообще не удивлен, что этот пост написан в сисярп-треде. Здесь ему самое место.
>>1159158
> За 10 лет работы с унаследованным кодом
> 10 лет жрал говно и так и не нашел ультраговно, поэтому приходится подсирать самому
Аноним 20/03/18 Втр 09:11:26  1159416
>>1157667
Там может быть "bool?"
Аноним 20/03/18 Втр 09:27:34  1159421
>>1157597 (OP)
Не слышал, но подозреваю, что очередной максималистский культ. Погромисты любят культы, ведь всегда проще орать с плакатом, чем включать голову. Тот же злополучный goto - отличный пример: 80% тупо орут про его вредность, еще 19% могут объяснить, почему он вреден (да, он превращает поток управления в неструктурированные макароны) и лишь 1% укажет, что есть ситуации, когда он весьма эффективен (конечные автоматы, например).

Так же и здесь. Ноги культа явно растут из простого факта: ветвление логики часто указывает на целесообразность перехода к инверсии контроля через полиморфизм, как в примере у этого >>1157617 анона. Ясен хуй, что из этой самой целесообразности не проистекает демоничности if, и в примере >>1157644 его использование вполне оправдано.

Любые приемы должны хорошо ложиться на практику. Например, одно время бытовала такая установка: функция должна иметь единственную точку выхода. И действительно, при теле функции в два экрана это упрощало жизнь. Однако со временем человечество смекнуло, что функции нужно делать максимально короткими, и внезапно оказалось, что теперь удобнее делать много точек выхода, чем плодить влоденные блоки else - и else стал антипаттерном, даже линтеры некоторые подсвечивают как говнокод. Но это не означает, что его категорически нельзя использовать или что тернарный оператор под запретом. Надо всякий раз думать, почему стоит или не стоит использовать любой прием.
Аноним 20/03/18 Втр 10:40:29  1159450
gV9u3QyAMQ.jpg (55Кб, 600x600)
>>1157669
if (booki.similary(booki.shings, shelfi.booksample.shings))
Аноним 20/03/18 Втр 14:43:08  1159580
>>1159181
типичный даунич, ясный хуй, что всякий отличный от твоего опыт - ультраговно
Аноним 20/03/18 Втр 14:43:52  1159582
>>1159164
я сразу в си и ассемблер в катился, на хуй мне этот кубасик
Аноним 20/03/18 Втр 21:24:22  1159772
>>1159580
> даунич
> безграмотная мелкобуква

Нассал в рот возомнившему о себе школьничку.
Аноним 21/03/18 Срд 17:46:06  1160166
>>1159772
соси хуй, пидор, у меня уже свой ай ти стартап
Аноним 24/03/18 Суб 10:15:01  1161657
Аноним 24/03/18 Суб 10:17:43  1161659
fg
Аноним 24/03/18 Суб 12:52:45  1161732
>>1159421
>Тот же злополучный goto - отличный пример: 80% тупо орут про его вредность, еще 19% могут объяснить, почему он вреден (да, он превращает поток управления в неструктурированные макароны) и лишь 1% укажет, что есть ситуации, когда он весьма эффективен (конечные автоматы, например).
Ты наверное только недавно прочитал в книге "что такое программирование". За goto в C# надо отрывать руки в любых проявлениях. Когда вы уже тупые животные уясните, что программы пишутся в первую очередь для человека, который потом будет его сопровождать? Твои ебанные потуги "оптимизировать" код нахуй никому не нужны, когда фича из-за таких ебланов-оптимизаторов просирает все сроки.
Аноним 24/03/18 Суб 14:38:35  1161804
>>1161732
если звезды зажигают - это кому-нибудь нужно
Аноним 25/03/18 Вск 00:49:01  1162123
>>1157597 (OP)
Это не относится непосредственно к шарпу, а ноги растут из функционального программирования. В идеале функциональная программа - это функция от функций от функций и так далее, и ничего больше. У ФП-адептов отношение к этому, как к ебле: переебать всех баб на свете невозможно, но стремиться к этому нужно. Так как мы живем в реальном мире, мутабельность, ось t и прочие нежелательные артефакты типа if-else и циклов устранить нельзя, но функциональщики придумали засовывать их в ящики, реализующие какие-то стандартные алгоритмы, так что вся эта хуйня внутри, а снаружи только функции и пара рельсовых путей. Монады, ептыть. И строить программу уже из этих ящиков. Примеры: если у тебя есть потенциально отсутствующее значение, ты можешь пердолиться с проверками на null, а можешь засунуть его в Nullable, она же монада Maybe, и вызывать цепочкой ее методы, реализуя все, что надо, в виде функций от функций и так далее, как функциональщики любят. В качестве бонуса система типов может полностью защитить тебя от обращения к null объекту. Или вот еще:

if (booki.similary(booki.shings, shelfi.booksample.shings) == true)
{
shelfi.bookList.Add(booki);
booki.placed = true;
break;
}
else continue;

Очевидно, это происходит в внутри цикла по книгам, так что тут вполне можно применить Map/Reduce/Filter/что_там_еще_в_шарпе_есть операции по спискам, после чего там не будет брейков, continue, ifов и, кстати, booki.placed флага, скорее всего. Где-то так.
Аноним 25/03/18 Вск 02:06:24  1162139
rustle-b.jpg (432Кб, 1000x902)
>>1161804
А если четыре — то это дважды два.
Аноним 25/03/18 Вск 02:17:39  1162141
>>1157597 (OP)
Ну например ты можешь создать словарь, где ключ будет bool или Enum, а значение делегат и пихать в него выражение, в зависимости от которого будет вызываться тот или иной метод
Аноним 25/03/18 Вск 07:10:11  1162176
>>1162141
Что ты несешь, поехавший? В чем тогда вообще смысл этого?
Аноним 26/03/18 Пнд 15:58:26  1162987
>>1157597 (OP)
Хуита без задач.
Функциональщина признак дегенерата.
Раньше иммутабельность форсили. С null воевали. Теперь видимо будут с if'ами воевать.
Аноним 26/03/18 Пнд 22:18:45  1163156
Jakob Jenkov пишет:
From now on, the usage of "if" statement is considered as anti-pattern and must be avoided at all costs. Period.
Аноним 26/03/18 Пнд 22:20:44  1163157
image.png (26Кб, 225x225)
>>1157597 (OP)
http://www.yegor256.com/2016/08/10/if-then-else-code-smell.html
Аноним 26/03/18 Пнд 23:53:32  1163199
>>1163157
Егорыч пиздеть не будет. Что же, пора отказываться от if, посоны.
Аноним 27/03/18 Втр 08:10:59  1163322
>>1163199
Я уже начал все переписывать.
Аноним 27/03/18 Втр 08:15:27  1163323
>>1163322
молодца, не забудь удалить пустые строчки.

http://www.yegor256.com/2014/11/03/empty-line-code-smell.html
Аноним 27/03/18 Втр 08:37:09  1163331
>>1163323
Давно уже удалил все пустые строки. Вместе с комментариями.
Аноним 27/03/18 Втр 22:29:43  1163742
>>1163323
Скажите, у него ООП головного мозга или все-таки дело говорит?
Аноним 29/03/18 Чтв 09:04:43  1164441
>>1163742
Он порет настолько незамутненную чушь, что многие принимают ее за откровение. В принципе любая религия так работает, не только секта свидетелей Егория.
Аноним 29/03/18 Чтв 09:50:32  1164452
>>1161732
А вот и типичные представители 80% пожаловали, конечного автомата не нюхавшие.
Аноним 29/03/18 Чтв 10:27:27  1164468
>>1164441
В отличие от большинства сидящих здесь кукаретиков, Егорка пишет реальный код и зарабатывает этим. Он говорит о том, что в его практике реально облегчило работу.
Я бы прислушался к его мнению на твоем месте.
Аноним 29/03/18 Чтв 10:50:45  1164477
>некоторые ребята программируют не используя оператор if.
Ну есть такая поговорка "заставь дурака Богу молится, он лоб расшибёт". Есть такой антипаттерн: лесенка из if-ов и в каждом условие типа "if (user.type == a) then do huinyaA else if (user.type == b) then do huinyaB else if (user.type == c) do huinyaC". В этом случае очевидно надо к user добавить метод doHuinya(), сделать подклассы и заменить весь этот код user = userFactory.makeUser(type);user.doHuinya(). Ну и есть дауны, которые думают, что так надо делать вообще везде, где есть if.
Аноним 29/03/18 Чтв 10:51:42  1164478
>>1163156
>Period.
ЯСКОЗАЛ
Аноним 29/03/18 Чтв 11:27:38  1164494
>>1164468
Он зарабатывает на сектантах, а не на написании кода. Я не возьмусь сказать, искренне он верит в свой бред или просто смекнул, что практичнее стричь капусту на дурачках, чем корпеть над кодом. Больше похоже на второе, хотя не исключаю и первого.
Аноним 29/03/18 Чтв 11:28:27  1164496
>>1164494
А вообще давно не было егоросрача, давайте здесь раздуем, тред подходящий.
Аноним 29/03/18 Чтв 11:31:51  1164498
>>1164494
>зарабатывает
Ты правда думаешь о зарабатывает на своем блоге и на книже?
Аноним 29/03/18 Чтв 11:37:38  1164503
>>1164498
Хайпа он ловит много, на конференциях светится. Это, конечно, не единственный источник дохода, но какую-то копеечку он с этого рубит. Невооруженным взглядом видно, что чел значительно лучше пиздоболит, нежели программирует.

Я, есличо, мимо старый пердун, руководитель группы разработки в топ-конторке и немножко знаю, о чем говорю.
Аноним 29/03/18 Чтв 11:40:58  1164504
GTyNDg8L.jpeg (214Кб, 1252x1252)
>C# if-less
>услышал, что некоторые ребята программируют не используя оператор if
Они пользуются switch?


Топ тредов
Избранное