Size: a a a

2021 July 10

И

Игорь in dlang.ru
Проблема не простов фобосе, а в том что в D у методов может быть дофига свойств типа @safe, @nogc. Их нужно как-то скрещивать
источник

EP

Egor Pugin in dlang.ru
а есть пример, где их просто ретурном возвращают?
источник

AP

Animus Pexus in dlang.ru
не спорю
источник

AP

Animus Pexus in dlang.ru
ну да, при желании эксепшны можно просто ретурном возвращать, это ж просто инстанцы Exception
источник

И

Игорь in dlang.ru
Уже некоторе время идет разговор о новой иерархии обьектов где все свойства будут правильно расставлены в супер-обьекте
источник

AP

Animus Pexus in dlang.ru
это как Object в питоне?
источник

AP

Animus Pexus in dlang.ru
а, понял
источник

KF

Konstantin Firsov in dlang.ru
К необъектным языкам плохо применима формальная логика, но если натягивать интерфейсы го по аналогии на объектные "интерфейсы", то тут тоже есть грабли: с позиции понятий наследование дает отношение подчинения, а интерфейс - пересечения. Если интерфейс не технического характера а-ля сериализовать, конвертировать в мапу и т.п., а несет в себе немного доменной логики, то появляется возможность приплести его ко множеству из N типов, часть из которых его реализовывать не должна или же нуждается в отдельном интерфейсе. На более поздних этапах обнаруживается ошибка и начинаются попытки исправлять\подстраивать\корректировать интерфейс, но за счет того, что его имплементят разные типы логически отдаленных между собой вещей, то повсеместно ломается апи у всех и эта задача балансировки, чтобы угодить всем, но и внести исправление может закончиться очень большими неприятностями. Отношение подчинения вид-индивид или же род\вид хоть и несет в себе проблему "хрупкого базового класса", но по проблемам более предсказуемо и за счет ограничений наследования иногда само исправляет ошибки. Так что вангую в более сложных гошных либах веселые приключения с такой аналогией ооп\неооп.
источник

И

Игорь in dlang.ru
Ну в D такой уже есть, но у него методы криво описаны и от них не унаследуешься с нужными аттрибутами
источник

AP

Animus Pexus in dlang.ru
по-этому интерфейсы эти в go очень определённые, на небольшое число функций сразу имеют чётко расписанные правила применения и реализации.
источник

EP

Egor Pugin in dlang.ru
ну я такое использование не встречал
источник

AP

Animus Pexus in dlang.ru
я так по-началу делал, когда с Go переходил
источник

EP

Egor Pugin in dlang.ru
передавать исключения вместо их кидания, хе
источник

AP

Animus Pexus in dlang.ru
в Go нет эксепшнов и все ошибки принято возвращать кодами как в C
источник

AP

Animus Pexus in dlang.ru
паники есть - их можно обрабатывать, но Go уводит от этого
источник

EP

Egor Pugin in dlang.ru
ну недостатки одного яп не надо переносить в другие
источник

EP

Egor Pugin in dlang.ru
тут есть свои механизмы
источник

AP

Animus Pexus in dlang.ru
ну, например, Торвальдс уже отругал растишек за эксепшны
источник

AP

Animus Pexus in dlang.ru
так что если бы D работал в ядре линукса, там бы, наверное, потребовали именно возвращать
источник

AP

Animus Pexus in dlang.ru
дескать, с эксепшнами легче недоследить, если он произойдёт, а при возврате из функции, хочешь-не хочешь - обрабатывать будешь своим этим
if err != nil {
  return err;
}
источник