C#でコードを書いております。
似たコードを2か所書く必要があるのですが、それをよりエレガントな方法で書きたいと思っています。
似たコードは以下の2つ(検索と置換)です。
ともにGREP処理の中で必要になっているものです。
処理A ファイルの検索処理
c#
1foreach (var file in files) 2{ 3 // 共通処理 4 // ファイルをダウンロードして、 5 // ユーザーが指定した文言で検索。 6 7 // 個別処理 8 // 検索の場合は何もしない。 9} 10
**処理B ファイルの置換処理 **
c#
1foreach (var file in files) 2{ 3 // 共通処理 4 // ファイルをダウンロードして、 5 // ユーザーが指定した文言で置換。 6 7 // 個別処理 8 // 置換が終わったファイルをアップロード。 9} 10
単純に考えれば、以下のようなやり方があるかなぁ?
と思っています。
何かほかにやり方があれば、教えていただけると幸いです。
よろしくお願い致します。
c#
1 2public enum ShoriType 3{ 4 // 検索 5 Find, 6 7 // 置換 8 Replace, 9} 10 11public class MyClass 12{ 13 public ShoriType ShoriType { get; set; } 14 15 private readonly IDictionary<ShorType, Action> _actions; 16 17 public MyClass() 18 { 19 this._actions = new ...; 20 this._actions.Add(ShoriType.TypeA, ()=>{ /* 何もしない。*/}); 21 this._actions.Add(ShoriType.TypeB, this.Upload); 22 } 23 24 private void Upload(...) 25 { 26 // 置換後のアップロード処理。 27 } 28 29 public void Shori() 30 { 31 foreach (var x in xx) 32 { 33 // 共通処理 34 ... 35 36 // 個別処理 37 this._actions[this.ShoriType](); 38 } 39 } 40}
その似た処理はどういう関係なのでしょうか。
モデルの特性によって、継承か委譲か変わるのでは。処理Aと処理Bをどういうときに使い分けるのか例があると回答が出やすいかもしれません。
ありがとうございます。
----
> その似た処理はどういう関係なのでしょうか。
----
片方が検索。もう片方が置換処理です。
サーバー上にあるファイルを正規表現などで検索または置換する処理を実装しています。
検索または置換を行うロジック自体は上記の「共通処理」内で行っています。
----
----
今回の質問は検索・置換が終わった後の処理についてです。
フローは以下の通り。
----
【検索】
1. サーバーのファイルをダウンロードする。
2. ダウンロードしたファイルを検索または置換する。
----
【置換】
1. サーバーのファイルをダウンロードする。
2. ダウンロードしたファイルを検索または置換する。
3. 置換が終わったファイルをアップロードする。
----
> 処理Aと処理Bをどういうときに使い分けるのか
ユーザーが処理A(検索)と処理B(置換)を呼び分けます。
====
なお、2の処理は別クラスに委譲しております。
そのため、検索なのか置換なのかを、この処理の中で意識したいとは思っていません。
改行できない・・・(T T)
回答4件
あなたの回答
tips
プレビュー