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

回答編集履歴

8

リンク追加

2021/01/15 04:43

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -77,7 +77,7 @@
77
77
  if (player.lapCount == 1) から始まるif文の各分岐も同じような処理をしていますね。
78
78
  また、変数名にOne,Two,Threeという単語は通常つけません。
79
79
 
80
- One,Two,Threeとつけた変数を配列やリストのようなコレクションにまとめることでこの分岐を無くすことが出来ます。
80
+ One,Two,Threeとつけた変数を[配列](https://ufcpp.net/study/csharp/st_array.html)やリストのようなコレクションにまとめることでこの分岐を無くすことが出来ます。
81
81
  ```diff
82
82
  - private string oneLapTimeStoring; // 1ラップ目
83
83
  - private string twoLapTimeStoring; // 2ラップ目

7

追記

2021/01/15 04:43

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -75,8 +75,16 @@
75
75
  > 同じ処理を何回も書くのはダメだと聞いた
76
76
 
77
77
  if (player.lapCount == 1) から始まるif文の各分岐も同じような処理をしていますね。
78
- 変数名にOne,Two,Threeという単語は通常つけません。配列やリストのようなコレクションに変えることでこの分岐は無くすことが出来ます。
78
+ また、変数名にOne,Two,Threeという単語は通常つけません。
79
79
 
80
+ One,Two,Threeとつけた変数を配列やリストのようなコレクションにまとめることでこの分岐を無くすことが出来ます。
81
+ ```diff
82
+ - private string oneLapTimeStoring; // 1ラップ目
83
+ - private string twoLapTimeStoring; // 2ラップ目
84
+ - private string threeLapTimeStoring; // 3ラップ目
85
+ + private List<string> lapTimeMessages;
86
+ ```
87
+
80
88
  # 余談③
81
89
 
82
90
  コメントの書き方も実は改善できます。

6

誤字

2021/01/15 04:40

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
  変数名はその変数の使われる目的に沿って決めます。
68
68
  例えば、Unity上のメッセージとして表示するならtwoLapTimeMessageのように命名すべきです。
69
- 名は体を表すようという言葉があります。変数の命名も同じです。
69
+ 名は体を表すという言葉があります。変数の命名も同じです。
70
70
 
71
71
  では、LapTimeCount や MeasuredForEachLap という命名はどうでしょうか?
72
72
 

5

誤字

2021/01/15 04:33

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
  > 同じ処理を何回も書くのはダメだと聞いた
76
76
 
77
- if (player.lapCount == 1) から始まるifの各分岐も同じような処理をしていますね。
77
+ if (player.lapCount == 1) から始まるifの各分岐も同じような処理をしていますね。
78
78
  変数名にOne,Two,Threeという単語は通常つけません。配列やリストのようなコレクションに変えることでこの分岐は無くすことが出来ます。
79
79
 
80
80
  # 余談③

4

文章の修正

2021/01/15 04:31

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -1,4 +1,4 @@
1
- 質問は解決されていますが、outを使わなくても解決できるので回答します。
1
+ 質問は解決されていますが、outを使わなくても解決できると判断したので回答します。
2
2
 
3
3
  > oneLapTimeStoring,twoLapTimeStoring,threeLapTimeStoringがnull と出ます。
4
4
  何故でしょうか?

3

文章の修正

2021/01/15 04:30

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -56,7 +56,7 @@
56
56
 
57
57
  さて、outを使う手段と使わない手段の2つが掲示されましたが、可能ならoutキーワードは使わない方が良いと私は思います。理由はoutで渡された値の変更が呼び出し元にも反映される訳なので、どんな値が返ってくるか人が想像しづらくなるためです。
58
58
 
59
- もっとざっくり書くなら、**プログラムが複雑になるから** です。
59
+ もっとざっくり書くなら、**プログラムが複雑になりやすくなるから** です。
60
60
  プログラムは可能な限りシンプルに書きましょう。
61
61
 
62
62
  # 余談①

2

追記

2021/01/15 04:30

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -74,8 +74,8 @@
74
74
 
75
75
  > 同じ処理を何回も書くのはダメだと聞いた
76
76
 
77
- if (player.lapCount == 1) から始まる分処理も同じような処理をしていますね。
77
+ if (player.lapCount == 1) から始まるif分の各分岐も同じような処理をしていますね。
78
- 変数名にOne,Two,Threeという単語は通常つけません。配列に変えることでこの分岐は無くすことが出来ます。
78
+ 変数名にOne,Two,Threeという単語は通常つけません。配列やリストのようなコレクションに変えることでこの分岐は無くすことが出来ます。
79
79
 
80
80
  # 余談③
81
81
 
@@ -84,4 +84,7 @@
84
84
  (WhatではなくWhyを書く)
85
85
 
86
86
  ・・・みたいなノウハウは、(私は回し者ではありませんが)
87
- [リーダブルコード](https://www.oreilly.co.jp/books/9784873115658/)のような書籍を購入して学ぶべきだと思います。
87
+ [リーダブルコード](https://www.oreilly.co.jp/books/9784873115658/)のような書籍を購入して学ぶべきだと思います。
88
+
89
+ とはいえ、学習目的のコードならその場限りでしか使わないでしょうから、メモ代わりにWhatを書いても私は良いのではないかと思います。
90
+ (Um_kok さんが掲示したソースがどちらであるかは分かりませんが)

1

追記

2021/01/15 04:28

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -8,7 +8,7 @@
8
8
  なので、timeStoringの値を変更してもoneLapTimeStoring, twoLapTimeStoring, threeLapTimeStoringには反映されません。
9
9
 
10
10
  oneLapTimeStoring, twoLapTimeStoring, threeLapTimeStoringを変更するにはそれ等に対して代入しなければいけません。
11
- また、LapTimeCountは各ラップに対応する文字列を生成しているようなので、そのにはoneLapTimeStoring, twoLapTimeStoring, threeLapTimeStoringという具体的な回数を記載する訳にはいきません。
11
+ また、LapTimeCountメソッドは各ラップに対応する文字列を生成しているようなので、そのメソッド内にはoneLapTimeStoring, twoLapTimeStoring, threeLapTimeStoringという具体的な回数を記載する訳にはいきません。
12
12
 
13
13
  ということは、作成した文字列を呼び出し元に戻してから代入すれば良いだけです。
14
14
  下記のようにメソッドの戻り値をvoidからstringに変更しましょう。
@@ -62,10 +62,14 @@
62
62
  # 余談①
63
63
  Storingという単語はありません。Stringです。また、型を見ればstringと分かるので、わざわざつける必要はありません。
64
64
 
65
+ すると、twoLapTime というような名前になりますが、私ならその変数名を見てstringではなくDateTimeの型であると勘違いをすると思います。
66
+
65
67
  変数名はその変数の使われる目的に沿って決めます。
66
68
  例えば、Unity上のメッセージとして表示するならtwoLapTimeMessageのように命名すべきです。
67
69
  名は体を表すようという言葉があります。変数の命名も同じです。
68
70
 
71
+ では、LapTimeCount や MeasuredForEachLap という命名はどうでしょうか?
72
+
69
73
  # 余談②
70
74
 
71
75
  > 同じ処理を何回も書くのはダメだと聞いた