这是好风格吗?

时间:2011-10-25 06:59:12

标签: c++ coding-style parameter-passing

我的函数中有一些参数接收并传递相同的值。我应该将所有参数变量命名为相同吗?

示例:

// assume numMonth = 12
// assume numYear = 2000

int promptMonth(); // returns numMonth
int promptYear();  // returns numYear

int daysInMonth(int numMonth, int numYear); // numMonth and numYear will always
int daysInYear(int numYear);                // be sent to these.

bool isLeapYear(int numYear);               // daysInYear() and daysInMonth() call
                                            // this function and send it numYear 
                                            // (which would be 2000 in this case).

是否所有这些参数都被命名为相同,因为相同的值被传递给它们?

2 个答案:

答案 0 :(得分:6)

同样,我假设你的意思是函数参数名numYear

是的,最好以有意义的方式命名变量,以指示传递的值的含义/目的。

这些变量是不同功能的一部分,因此范围仅限于那些功能。因此,如果您正在考虑这个问题,则不存在多个定义的问题。

答案 1 :(得分:4)

通常这种风格是个好主意。你绝对应该遵循它,但仍然存在滥用和误解的空间。

让我自己解释一下

  • 误解:即使你 一致地命名变量,读者也可能不相信你的意思。
  • 误用:或许并非任何 int都适合作为年份值。

对于更复杂的情况,您应该考虑为输入变量使用特殊类型。 例如,考虑将部分整数更改为:

Month promptMonth();
Year promptYear();

int daysInMonth( Month m, Year y); 
int daysInYear( Year y );

bool isLeapYear( Year );

你能看到现在不仅你不必使用复杂的变量名,而且你还可以进行特殊的打印和检查吗?

cout << "the current month is " << promptMonth();  

可以输出

the current month is 'October'