私はソフトウェアエンジニアリングが初めてなので、学習演習としてチェスゲームを書きました。私の友人はそれを見て、私のコードが次のように見えることを指摘しました
for (int i = 0; i < 8; i++){
for (int j = 0; j < 8; j++){
彼は代わりにあるべきだと主張した
for (int i = 0; i < CHESS_CONST; i++){
for (int j = 0; j < CHESS_CONST; j++){
私が今考えるのが面倒ではないいくつかのより良いシンボル名で。
もちろん、私は一般的にマジックナンバーの使用を避けることを知っていますが、
- この数は変更されません。
- 番号はコード全体で非常に多くの場所で使用されているため、名前はとにかく説明的ではありません。そして
- チェスプログラムのソースコードを調べている人は、8の目的を知るためにチェスについて十分に知っている必要があります。
シンボリック定数は本当に必要ありません。
では、皆さんはどう思いますか?これはやり過ぎですか、それとも慣習に沿ってシンボルを使用する必要がありますか?
i
とj
ループ変数です。私の人生では、どちらがランクを表し、どちらがファイルを表すことになっているのかわかりません。ランクの範囲は1..8からファイルの範囲はa..hですが、あなたの場合、両方i
とj
範囲は0..7なので、どちらがどちらなのかわかりません。私が知らない国際的なレター不足の危機はありますか、またはそれらの名前をrank
andに変更することで何が問題になりfile
ますか?
foreach(var rank in Ranks)
。また、両方のループを、各要素が(ランク、ファイル)タプルである1つにマージすることを検討します。