Две альтернативы, которые вы предлагаете, не отличаются (явно большим) количеством «функций», которые вы хотите предложить из вашего API. Однако у второго, похоже, много недостатков, потому что вы теряете сильную проверку типов, становится намного сложнее документировать функциональность и т. Д. (Единственное преимущество, которое я вижу, это то, что вам не нужно менять свой API, если вы добавляете функциональность . Но в тот недостаток, что пользователи не смогут не понять изменения API как удаленные функции до времени выполнения.)
что более связаны с этим вопросом является Single Принцип является ответственным (http://en.wikipedia.org/wiki/Single_responsibility_principle). Поскольку вы говорите о ООП, вы не должны раскрывать свои десятки функций в пределах одного класса, но разделять их между разными классами, каждый из которых несет отдельную ответственность. Определение хороших «обязанностей» и ролей требует определенной практики, но, следуя некоторым основным рекомендациям, вы сможете быстро начать работу. См. Are there any rules for OOP? для хорошей отправной точки.
Ответить на вопрос редактировать
Я не использовал D-Bus, так что это может быть совершенно неправильно. Но из краткого взгляда на tutorial я читал
Каждый объект поддерживает один или несколько интерфейсов. Подумайте о интерфейсе как названной группе методов и сигналов, так же, как в GLib или Qt или Java. Интерфейсы определяют тип экземпляра объекта.
DBus идентифицирует интерфейсы с простой строкой с именами, что-то , как org.freedesktop.Introspectable. Большинство привязок сопоставят эти имена непосредственно с соответствующим языком программирования , например, с интерфейсами Java или с чистыми виртуальными классами C++.
Насколько я понимаю, D-Bus имеет концепцию объектов differnt, которые предоставляют интерфейсы, состоящие из нескольких методов. Это означает (для меня), что мой ответ выше по-прежнему применяется. «D-Bus native» способ указать ваш API будет означать демонстрацию интерфейсов, и я не вижу причин, по которым хорошие рекомендации по разработке ООП не должны быть действительными. Как представляется, D-Bus сопоставляет их даже с конструкциями на родном языке, это даже более вероятно.
Конечно, никто не держит вас от создания собственного языка описания API в XML. Тем не менее, такие вещи, как злоупотребление базовыми методами. У вас должны быть веские причины для таких действий.
хороший ответ. Наличие метода, который принимает (и возвращает) только какой-то объект черного ящика (например, структурированная строка), может казаться слабо связанным, но на самом деле вы просто отбрасываете все преимущества, которые скомпилированный код дает вам интерпретируемый код – PeteH
I внесли изменения, можете ли вы ответить на часть, которую я попросил в редактировании? –
спасибо за подсказку, я тоже отредактировал свой ответ. – Philipp