RプログラミングでS4メソッドを使うことが得になるのはどんなときか
質問
私は仕事上、定期的にRでプログラミングをしており、クライアントや同僚のためにパッケージも書いています。ここのプログラマの何人かは Java のバックグラウンドを持っており、S4 メソッドを使用して、すべてをオブジェクト指向の方法で行うことに固執しています。一方、私の経験では、S4 の実装はしばしばパフォーマンスが低下し、コードを実行したいことを実行させようとすると、より多くの頭痛の種を引き起こします。
いくつかのケースでは、複雑なオブジェクトを構築したり、制御された方法で既存のオブジェクトを追加したりすることができなければならないことに、私は間違いなく同意します。しかし、ほとんどの場合、S4 の実装は、standardGeneric、メソッド、コンストラクター、イニシャライザーなどを定義するようなすべての面倒なことをしなくても、同様に古典的なリストを使用して簡単に行うことができます。
RのためにS4実装を書くことを考えるのはいつですか?
OOPはRで多くの方法で行うことができますが、私の質問は、特にS4メソッドを使用することの付加価値に本当に狙いを定めています。
どのように解決するのですか?
あなたには直接関係ないと思いますが、もしあなたがBioconductorのパッケージを開発しているなら、S4の使用を積極的に推奨しているので、10年以上前からS4を使うインセンティブがあります。
setGeneric、setMethod、NAMESPACE の扱いなど、余分なオーバーヘッドが苦痛であることがわかります。 とはいえ、私は、S4 が課す構造、拡張性の可能性、および他のものは、価値があると感じています。 何事もそうですが、トレードオフの関係もあります。 S3のメソッドが単に命名規則(foo.class)によって隠されているのが嫌なのです。 とはいえ、私は、そうするように指示されない限り、自分のコードでS4を多用することを避ける傾向にあります。
関連
-
[解決済み] どのような場合に '$this' よりも 'self' を使うべきですか?
-
[解決済み] C++でクラスと構造体はいつ使い分けるべきか?
-
[解決済み] ポリモーフィズムとは何か、何のためにあり、どのように使われるのか?
-
[解決済み] 抽象クラスの代わりにインターフェイスを使用する場合とその逆は?
-
[解決済み] C++で'friend'はいつ使うべきですか?
-
[解決済み】関数型プログラミングはGoFデザインパターンに取って代わるか?
-
[解決済み】クラスではなく、構造体を使用する必要があるのはどんな場合ですか?
-
[解決済み】なぜPythonコードはlengthメソッドの代わりにlen()関数を使用するのですか?
-
[解決済み] なぜプロトコルの関連型はSwiftの汎用型構文を使用しないのですか?
-
[解決済み] CoffeeScriptのプライベートメンバー?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] 抽象メソッドと仮想メソッドの違いは何ですか?
-
[解決済み] ポリモーフィズムとは何か、何のためにあり、どのように使われるのか?
-
[解決済み] Delegateとは?[クローズド]。
-
[解決済み] protected なメンバ変数を使うべきですか?
-
[解決済み] Dartでインターフェイスを定義するには?
-
[解決済み] CoffeeScriptのプライベートメンバー?
-
[解決済み] 抽象クラス vs. インターフェース vs. ミキシン
-
[解決済み] なぜインターフェースを使うのか?標準化のためだけ?[クローズド]
-
[解決済み] Rとオブジェクト指向プログラミング