1. ホーム
  2. oop

RプログラミングでS4メソッドを使うことが得になるのはどんなときか

2023-09-26 07:19:44

質問

私は仕事上、定期的にRでプログラミングをしており、クライアントや同僚のためにパッケージも書いています。ここのプログラマの何人かは Java のバックグラウンドを持っており、S4 メソッドを使用して、すべてをオブジェクト指向の方法で行うことに固執しています。一方、私の経験では、S4 の実装はしばしばパフォーマンスが低下し、コードを実行したいことを実行させようとすると、より多くの頭痛の種を引き起こします。

いくつかのケースでは、複雑なオブジェクトを構築したり、制御された方法で既存のオブジェクトを追加したりすることができなければならないことに、私は間違いなく同意します。しかし、ほとんどの場合、S4 の実装は、standardGeneric、メソッド、コンストラクター、イニシャライザーなどを定義するようなすべての面倒なことをしなくても、同様に古典的なリストを使用して簡単に行うことができます。

RのためにS4実装を書くことを考えるのはいつですか?

OOPはRで多くの方法で行うことができますが、私の質問は、特にS4メソッドを使用することの付加価値に本当に狙いを定めています。

どのように解決するのですか?

あなたには直接関係ないと思いますが、もしあなたがBioconductorのパッケージを開発しているなら、S4の使用を積極的に推奨しているので、10年以上前からS4を使うインセンティブがあります。

setGeneric、setMethod、NAMESPACE の扱いなど、余分なオーバーヘッドが苦痛であることがわかります。 とはいえ、私は、S4 が課す構造、拡張性の可能性、および他のものは、価値があると感じています。 何事もそうですが、トレードオフの関係もあります。 S3のメソッドが単に命名規則(foo.class)によって隠されているのが嫌なのです。 とはいえ、私は、そうするように指示されない限り、自分のコードでS4を多用することを避ける傾向にあります。