Roman
не совсем
Vasily
Ну дык, ептыть
gsomix
не совсем
Просто в контексте решаемой задачи я не вижу разницы между классом типов и интерфейсом, короме технической.
Vasily
Roman
У всех этих абстракций есть изначально какая-то логическая функция. Но их часто используют не потому, что эта логическая нагрузка применима в данном сценарии, а по техническим соображениям, пушто так проще грубо говоря
Vasily
На большом массиве кода
Vasily
КОторый надо анализировать и трансформировать
gsomix
Vasily
И вроде с технической точки зрения все ок, но логически попадаешь в ловушку
Vasily
Кароч
Vasily
Поныряй в энтерпрайз лет несколько
gsomix
Roman
это не только эстетические чувства задевает) От несоответствия логической нагрузки и технической реализации постоянно возникают проблемы даже серьезнее чтения кода
gsomix
Roman
отличие чего от ситуации с классами?
gsomix
Ситуации с интерфейсом.
gsomix
Vasily
typeclass
Roman
Ситуации с интерфейсом.
когда есть интерфейс, по умолчанию думаешь, что он что-то значит. Что есть такая сущность в бизнес логике
gsomix
gsomix
Какие сущности? 🙃
Vasily
gsomix
Сущности у меня в рекордах и DU.
Vasily
Как там было про отличие выпускника ПТУ от выпускника университета
Roman
Когда выясняется, что это просто искусственно собраная вместе пачка методов потому что васе так было надо, обычно уже потрачено пару часов на то, чтобы понять че к чему
Vasily
Выпускник университета знает, как устроен телевизор, но не может его починить, а выпускник ПТУ не знает, как устроен телевизор, но может его починить
gsomix
gsomix
Vasily
x
Marker interfaces aren’t actually interfaces. At least, they aren’t according to the common definition and understanding of the term:
An interface is defined as a syntactical contract that all the classes [implementing] the interface should follow. The interface defines the ‘what’ part of the syntactical contract and the deriving classes define the ‘how’ part of the syntactical contract.
An interface defines a contract between implementers and consumers — except a marker interface, because a marker interface defines nothing but itself. So, right out of the gate, the marker interface fails at the basic purpose of being an interface.
gsomix
gsomix
@atsapura опять приводит примеры говнокода, когда кто-то собрал непонятно что в интерфейсе. Но я и в языке с классами типов так могу делать.
gsomix
gsomix
Вы чего к ней прикопались.
Roman
я теряю нить разговора
gsomix
Я просто прошу объяснить нормально, без аппеляции в вашему печальному опыту.
Roman
почему опытом нельзя пользоваться?
gsomix
Потому что у вас это "плохой продакшн на C#" и "хорошие петы на F#".
gsomix
Лучше что-нибудь объективное.
Roman
gsomix
gsomix
Сами же говорите, что в ООП все неясно.
Roman
Roman
Есть набор устоявшихся практик
Roman
Золотым я его конечно не считаю. Но так "считается делать правильно" сейчас
Roman
То есть это то, что опытные программисты (правда, без знания ФП) считают "как надо делать".
gsomix
И как же?
gsomix
Какая у тебя выборка?
Roman
сейчас у меня 10 место работы, кажется
Vasily
Кароч
Roman
или 11
Roman
на некоторых работах более чем на 1 проекте работал
Vasily
Через n мест работы понимаешь
Vasily
Что код отличается двумя вещами
Roman
Так что выборка выше среднего, я думаю
Vasily
1. Формой лопаты
2. Сортами говна
Vasily
Ну и практиками логистики этого всего по окрестным полям
Roman
Я вот для себя понял, что нарушение строгости абстракций и условное натягивание совы на глобус на длинной дистанции всегда плохо оборачивается
Roman
Неизбежно возникают разного сорта неудобства, иногда очень тяжелые для бизнеса
gsomix
@atsapura @vshapenko Мне кажется, у нас серьезные культурные различия. Меня интересует логическая аргументация, почему интерфейсы — это плохо. Вы же мне зачем-то рассказываете про то, какой плохой код у вас в продакшене, как интерфейсы становятся бизнес-сущностями, есть золотой стандарт ООП... И предлагаете (зачем?) мне самому окунуться в это дерьмо. :) // зачееем?
В свою очередь я для себя отмечаю, что интерфейсы — это:
- нормальный способ делать органичения на поведение (в языках, где нет других возможностей)
- нормальный путь нормализации типов
- возможность делать расширяемые множества значений (в языках, где этого нет)
Vasily
Дык я ж с аргументацией не спорю
Vasily
Все верно говоришь
Vasily
А различия в том, как это на практике применяется обычно
gsomix
В любом языке можно абузить фичи и неправильно их использовать.
Roman
шта
Vasily
Ну тут как та история про массажер для шеи
Vasily
КОторый на самом деле используют по-другому
Roman
бля я вообще не понимаю о чем спор. Я не говорю, что все интерфейсы надо выжечь каленым железом и оставить только SRTP на этом пепелище. Я всего лишь утверждал, что во многих случаях интерфейсы применяют за неимением горничной, тогда как сртп (или тайп классы) были бы уместней
Roman
но меня запарило воду в ступе толочь че-то
gsomix
gsomix
gsomix
И все такое.
Roman
мне че-то тяжело с тобой разговаривать. Создается впечатление, что ты хочешь срач ради срача или что я чем-то тебя раздражаю
gsomix
Нет, я просто не люблю, когда мне начинают затирать истории про свой продакшн на C#. 🙃 Ну, типа норм общались, чего вы начинаете?
gsomix
В F# тоже есть интерфейсы.