私はRubyを初めて使用し、主にC#とActionScript 3(他の言語の中でも)から来ています。機能の抽象化に興味があります。具体的には、RubyのFTPおよびSFTPライブラリをラップおよび抽象化します。
私は周りを探していて、バックアップと呼ばれる宝石に出くわしました。S3、SCP、SFTP、FTPを介したバックアップをサポートしているので、本当に注目を集めました。それで、「すごい、これが完璧な例だ!」と思いました。ソースを閲覧し始めましたが、次のようなコードに出くわしました。
case backup.procedure.storage_name.to_sym
when :s3 then records = Backup::Record::S3.all :conditions => {:trigger => trigger}
when :scp then records = Backup::Record::SCP.all :conditions => {:trigger => trigger}
when :ftp then records = Backup::Record::FTP.all :conditions => {:trigger => trigger}
when :sftp then records = Backup::Record::SFTP.all :conditions => {:trigger => trigger}
end
それはcase/whenステートメントで散らかっています!これをC#で攻撃している場合は、プロトコルインターフェイス(または抽象クラス)を作成し、FTPとSFTPに実装させます。次に、私のクライアントクラスは、実装を気にせずにプロトコルのインスタンスを渡すだけです。ゼロスイッチ/ケース。
Rubyでコーディングする際の、この状況でのベストプラクティスに関する少しのガイダンスをいただければ幸いです。