LINUX.ORG.RU
ФорумTalks

Все скалисты настолько упороты, что не понимают/не знают для чего нужны интерфейсы и абстрактные классы?

 , ,


0

4

Решил поковырять Apache Apollo и с удивлением обнаружил, что создатели настолько рукожопы, что для запуска эмбеддед брокера и написания к нему плагина необходимо лазать по сырцам.

И не первый раз вижу такое у скалистов, что тебе дают базовый класс, а он с**а пустой.

★★★★★

Последнее исправление: ya-betmen (всего исправлений: 1)

тебе дают базовый класс, а он с**а пустой

а что, собственно, такого?

oxo
()

Язык полностью ООП и поэтому там не нужны костыли в виде интерфейсов и абстрактных классов (как языковых конструкций).

Exmor_RS ★★★
()

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

Napilnik ★★★★★
()

Ооо, блин, джавист порвался, несите следущего. А в этой вашей джаве понимают для чего нужны ФП языки? И почему они именно такие?

zloelamo ★★★★
()
Ответ на: комментарий от Exmor_RS

Это всё результат сильного ООП и функционального влияния на язык.

Т.е. в скале норма лазать с сырцы чтобы понять как использовать скаловскую либу?

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от ya-betmen

да, сразу лезешь в сырцы, пропуская этап «какая же отвратительная и отстающая от кода документация»

SevikL ★★★★★
()
Ответ на: комментарий от zloelamo

А в этой вашей джаве понимают для чего нужны ФП языки? И почему они именно такие?

И какое это имеет отношение к тому что некоторые (на мой взгляд многие) скалисты не умеют писать либы?

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от SevikL

Если есть нормальные интерфейсы, даже не обязательно нормальные, хоть какие-то, то сырцы читать обычно нет никакой необходимости.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от Exmor_RS

Жабоскрипту простительно - там вообще нет интерфейсов, питон и руби просто скриптота, без статической типизации, хотя в них есть и то и другое (емнип).

Скала же имеет статическую типизацию и классы с интерфейсами. В чем проблема ими пользоваться?

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от VladimirMalyk

Нут вот например https://github.com/apache/activemq-apollo/blob/trunk/apollo-broker/src/main/s...

      type ServiceDuckType = {
        var broker: Broker
        var config: CustomServiceDTO
      }

      // Try to inject the broker via reflection..
      try {
        service.asInstanceOf[ServiceDuckType].broker = broker
      } catch {
        case _:Throwable =>
      }

      // Try to inject the config via reflection..
      try {
        service.asInstanceOf[ServiceDuckType].config = dto
      } catch {
        case _:Throwable =>
      }

Вапче весело, попытались воткнуть в объект свойства, если не получилось грухнули ошибки и поехали дальше. И там всё так. И чтобы понять как тебе написать наследника от этого сервиса приходится смотреть в код.

И это не только в аполло так.

ya-betmen ★★★★★
() автор топика
Последнее исправление: ya-betmen (всего исправлений: 1)
Ответ на: комментарий от ya-betmen

ну, так они принимает дата-трансфер-объект, и через рефлексию по инфе из него собирает инстансы.

в каком виде ты хочешь видеть там интерфейсы?

зы. но вообще, там валом голых try-catch и return, чего приличные люди в скале стараются избегать. код выглядит так, будто автор из явы пришел.

VladimirMalyk ★★★★★
()
Ответ на: комментарий от ya-betmen

И какое это имеет отношение к тому что некоторые (на мой взгляд многие) скалисты не умеют писать либы?

Прямое. Ты слишком веришь в Java, чтобы понимать принципы работы других языков.

zloelamo ★★★★
()
Ответ на: комментарий от zloelamo

Чего? При чем тут принципы языков. Давай еще раз, ты считаешь что нормально изучать код либы чтобы начать её использовать?

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от VladimirMalyk

Например интерфейс с методами, которые потом у объекта дергать будут, там же даже этого нет. Можно абстрактный класс с конструктором, я и сам прекрасно эти поля в объект передам при создании, если буду знать что они там нужны.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от ya-betmen

я не очень понимаю, чего именно ты ждешь.

Например интерфейс с методами, которые потом у объекта дергать будут, там же даже этого нет

у какого именно объекта ты хочешь видеть методы? абстрактный класс чего именно с конструкторами тебе нужен?

VladimirMalyk ★★★★★
()
Ответ на: комментарий от zloelamo

конкрето в сабжевом случае там от скалы только название имхо — реализация в тадициях явы. правда и реп протухший весьма, 5-7 лет.

VladimirMalyk ★★★★★
()
Ответ на: комментарий от ya-betmen

скинь линк на сырец того Service, который нужно реализовать. не исключено, что там банальный говнокод.

в частности, если там в публичных атрибутах var которые null по дефолту — это точно говнокод

VladimirMalyk ★★★★★
()

любители функциональщины, как привило, не умеют программировать. Вместо программирования они занимаются сокращением объёма кода.

Joe_Bishop
()
Ответ на: комментарий от Joe_Bishop

там в сабжевом коде функциональщины нет от слова вообще.
человек писал как на яве, используя только синтаксис скала.

насколько он джавист, что очень хорошо видно по его профилю в гитхабе: https://github.com/chirino?utf8=✓&tab=repositories&q=&type=source...

VladimirMalyk ★★★★★
()
Ответ на: комментарий от ya-betmen

Вопросов больше не имею.

А они должны были возникнуть. Видать нет среды для возникновения вопросов, поэтому любая ситуация, когда внешний сигнал не сответствует картине мира вызывает жопный огонь.

zloelamo ★★★★
()
Ответ на: комментарий от zloelamo

Нет, просто я убедился, что ты невменяем.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от ya-betmen

Заглушка. Например досе было фиктивное устройство, аналог /dev/null, в него можно отправить команду, и программа от этого не ломается.

Napilnik ★★★★★
()
Ответ на: комментарий от Napilnik

Нет там никаких заглушек, оно просто будет игнорить мой объект если он чего-то не умеет.

ya-betmen ★★★★★
() автор топика

что для запуска эмбеддед брокера и написания к нему плагина необходимо лазать по сырцам.

Такое в 95% фреймворках. Ты просто GStreamer ещё не ковырял.

ox55ff ★★★★★
()
Ответ на: комментарий от ya-betmen

Такое вообще решают паттерн-матчингом. Смотри как надо:

sealed trait ServiceDuckType
case class Broker(broker: ServiceDuckType) extends ServiceDuckType
case class CustomServiceDTO(dto: ServiceDuckType) extends ServiceDuckType

def inject(param: ServiceDuckType) = param match 
{
  case Broker(broker) => Some(broker)
  case CustomServiceDTO(dto) => Some(dto)
  case _ => None
}
LongLiveUbuntu ★★★★★
()
Последнее исправление: LongLiveUbuntu (всего исправлений: 1)
Ответ на: комментарий от VladimirMalyk

А, так это классический случай фортранщика, который на любом ЯП сможет написать как на Фортране.

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от ya-betmen

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

VladimirMalyk ★★★★★
()
Ответ на: комментарий от VladimirMalyk

Хз как там по больнице, но у меня со стороны впечатление, что 80% того что я видел на скале вещи-в-себе. Как оно внутри - интересовался мало.

ya-betmen ★★★★★
() автор топика
Последнее исправление: ya-betmen (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.