あなたが提案する2つの選択肢は、APIから提供したい「関数」の数(明らかに非常に多い)に違いはありません。ただし、強力な型チェックが失われているため、2番目の方法には多くの欠点があるようです。機能などを文書化するのがはるかに難しくなります(私が見る唯一の利点は、機能を追加する場合にAPIを変更する必要がないことです. ただし、実行時までユーザーが削除された関数などの API の変更を把握できないという欠点があります。)
この質問に関連するのは、単一責任の原則( http://en.wikipedia.org/wiki/Single_responsibility_principle ) です。OOPについて話しているので、1つのクラス内で数十の関数を公開するのではなく、それぞれが単一の責任を持つ異なるクラスに分割する必要があります. 適切な「責任」と役割を定義するにはある程度の練習が必要ですが、いくつかの基本的なガイドラインに従うことで、すぐに始めることができます。OOP の規則はありますか?を参照してください。良い出発点のために。
質問の編集に返信する
私は D-Bus を使ったことがないので、これは完全に間違っているかもしれません。しかし、私が読んだチュートリアルをざっと見ると
各オブジェクトは、1 つ以上のインターフェイスをサポートします。インターフェイスは、GLib、Qt、または Java と同様に、メソッドとシグナルの名前付きグループと考えてください。インターフェイスは、オブジェクト インスタンスの型を定義します。
DBus は、org.freedesktop.Introspectable のような単純な名前空間文字列でインターフェースを識別します。ほとんどのバインディングは、これらのインターフェース名を適切なプログラミング言語構造 (Java インターフェースや C++ 純粋仮想クラスなど) に直接マップします。
私が理解している限り、D-Bus には、いくつかのメソッドで構成されるインターフェイスを提供するさまざまなオブジェクトの概念があります。これは、(私にとって)上記の私の答えがまだ当てはまることを意味します。API を指定する「D-Bus ネイティブ」の方法は、インターフェイスを示すことを意味し、優れた OOP 設計ガイドラインが有効ではない理由はわかりません。D-Bus はこれらをネイティブ言語の構成要素にもマッピングしているように見えるため、これはさらに可能性が高くなります。
もちろん、XML で独自の API 記述言語を構築することを妨げる人は誰もいません。ただし、次のようなものは、基礎となる技術のある種の悪用です。そのようなことをするのには正当な理由が必要です。