teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

似た処理の関係について記載しました。

2015/12/03 14:58

投稿

LaLaLand
LaLaLand

スコア107

title CHANGED
File without changes
body CHANGED
@@ -2,23 +2,33 @@
2
2
 
3
3
  似たコードを2か所書く必要があるのですが、それをよりエレガントな方法で書きたいと思っています。
4
4
 
5
- 似たコードは以下の2つです。
5
+ 似たコードは以下の2つ(検索と置換)です。
6
+ ともにGREP処理の中で必要になっているものです。
6
7
 
8
+
7
- **処理A**
9
+ **処理A ファイルの検索処理**
8
10
  ```c#
9
- foreach (var x in xx)
11
+ foreach (var file in files)
10
12
  {
11
13
  // 共通処理
14
+ // ファイルをダウンロードして、
15
+ // ユーザーが指定した文言で検索。
16
+
12
- // 処理A(ここが違う)
17
+ // 個別処理
18
+ // 検索の場合は何もしない。
13
19
  }
14
20
 
15
21
  ```
16
- **処理B**
22
+ **処理B ファイルの置換処理 **
17
23
  ```c#
18
- foreach (var x in xx)
24
+ foreach (var file in files)
19
25
  {
20
- // 共通処理
26
+ // 共通処理
27
+ // ファイルをダウンロードして、
28
+ // ユーザーが指定した文言で置換。
29
+
21
- // 処理B(ここが違う)
30
+ // 個別処理
31
+ // 置換が終わったファイルをアップロード。
22
32
  }
23
33
 
24
34
  ```
@@ -32,8 +42,11 @@
32
42
 
33
43
  public enum ShoriType
34
44
  {
45
+ // 検索
46
+ Find,
47
+
48
+ // 置換
35
- TypeA,
49
+ Replace,
36
- TypeB,
37
50
  }
38
51
 
39
52
  public class MyClass
@@ -45,10 +58,15 @@
45
58
  public MyClass()
46
59
  {
47
60
  this._actions = new ...;
48
- this._actions.Add(ShoriType.TypeA, 処理A);
61
+ this._actions.Add(ShoriType.TypeA, ()=>{ /* 何もしない。*/});
49
- this._actions.Add(ShoriType.TypeB, 処理B);
62
+ this._actions.Add(ShoriType.TypeB, this.Upload);
50
63
  }
51
64
 
65
+ private void Upload(...)
66
+ {
67
+ // 置換後のアップロード処理。
68
+ }
69
+
52
70
  public void Shori()
53
71
  {
54
72
  foreach (var x in xx)
@@ -57,7 +75,7 @@
57
75
  ...
58
76
 
59
77
  // 個別処理
60
- this._actions[this.ShoriType]();
78
+ this._actions[this.ShoriType]();
61
79
  }
62
80
  }
63
81
  }