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

回答編集履歴

3

typo

2015/11/27 01:54

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -17,7 +17,7 @@
17
17
  【追記】
18
18
  もう少し説得力がありそうな例を思いつきました。
19
19
 
20
- HogeManagerを使っているプログラムを開発中のデバッグ中ある程度絞り込んで日付処理周りに想定外の動作があることまで分かったとします。この時、fetch_data_todayの機能が自分の理解通りの機能であることを確認するのではなでしょうか。(もしかすると、00:00:00が今日なのか昨日なのかでハマっているかも知れませんし。)
20
+ HogeManagerを使っているプログラムをデバッグ中ある程度絞り込んで日付処理周りに想定外の動作があることまで分かったとします。この時、fetch_data_todayの機能が自分の理解通りの機能であることを確認すると思ます。(もしかすると、00:00:00が今日なのか昨日なのかでハマっているかも知れませんし。)
21
21
  これくらい短いプログラムならソースを見た方が速いです。で、その確認が容易なのは、(3)→(2)→(1)の順序です。
22
22
 
23
23
  つまり、後輩君の主張は一見使う人の立場に立っているかのように見えますが、このようにデバッグする場面ではかなり不親切です。

2

具体例の追加

2015/11/27 01:54

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -11,4 +11,14 @@
11
11
  (3)は、fetch_data()関数の仕様だけ知っていれば自明ですね。書く時ちょっとだけ手間ですが、読む方は楽です。
12
12
 
13
13
  なので、私なら(3)(デフォルト引数無し)を選びます。
14
- 「今日のデータ」を取り出す場所が結構多い時は(2)も有りと思います。
14
+ 「今日のデータ」を取り出す場所が結構多い時は(2)も有りと思います。
15
+ ---
16
+
17
+ 【追記】
18
+ もう少し説得力がありそうな例を思いつきました。
19
+
20
+ HogeManagerを使っているプログラムを開発中のデバッグ中にある程度絞り込んで、日付処理周りに想定外の動作があることまで分かったとします。この時、fetch_data_todayの機能が自分の理解通りの機能であることを確認するのではないでしょうか。(もしかすると、00:00:00が今日なのか昨日なのかでハマっているかも知れませんしね。)
21
+ これくらい短いプログラムならソースを見た方が速いです。で、その確認が容易なのは、(3)→(2)→(1)の順序です。
22
+
23
+ つまり、後輩君の主張は一見使う人の立場に立っているかのように見えますが、このようにデバッグする場面ではかなり不親切です。
24
+ (2)は書くのが楽というメリットがありますが、(1)は「コード量が増える」、「正確な動作が隠される」と言う問題があり、無駄に工数をかけて作り、使う時も無駄に工数を消費するプログラムになっています。

1

補足

2015/11/27 01:46

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -6,7 +6,7 @@
6
6
  hoge.fetch_data # (2)
7
7
  hoge.fetch_data(Date.today) # (3)
8
8
  ```
9
- (1)は、fetch_data()関数の仕様と、fetch_data_todayが今日のデータを取り出すものであることの確認が必要です。字面からその旨理解できそうですが、一度は仕様書かソースを見て確認する必要があります。勘違いとか間違いって結構多いですから、確認を怠ると結構酷い目に合います。
9
+ (1)は、fetch_data()関数の仕様と、fetch_data_todayが今日のデータを取り出すものであることの確認が必要です。字面からその旨理解できそうですが、一度は仕様書かソースを見るか、実際に動かしみて確認する必要があります。勘違いとか間違いって結構多いですから、確認を怠ると結構酷い目に合います。
10
10
  (2)は、fetch_data()関数の仕様と、引数を省略した時今日のデータを取り出すことの確認が必要ですが、ソースをひと目見れば自明ですね。そして、書く時ちょっとだけ楽です。
11
11
  (3)は、fetch_data()関数の仕様だけ知っていれば自明ですね。書く時ちょっとだけ手間ですが、読む方は楽です。
12
12