我刚接触软件工程,因此作为一项学习练习,我写了一个国际象棋游戏。我的朋友看了一下,并指出我的代码看起来像
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是什么,
确实不需要符号常量。
那么你们怎么看?这是矫kill过正吗,还是我应该遵循惯例并使用符号?
i
和j
循环变量。我一生无法弄清楚哪个应该代表等级,哪个应该代表档案。等级范围从1..8和文件的范围从a..h,但在你的情况下,无论是i
和j
范围0..7,这样就不会帮我看看哪个是哪个。是否存在一些我不知道的国际性信件短缺危机,或者将它们重命名为rank
and 是什么问题file
?
foreach(var rank in Ranks)
。我还考虑将两个循环合并为一个,其中每个元素都是一个(行,文件)元组。