【发布时间】:2014-06-27 05:37:15
【问题描述】:
我有一个班级作业,老师在很多我同意的事情上都扣了分,但其中一些我不太确定。
“我不喜欢像 i 这样命名变量,而实际上计数器代表一个真实的东西,一个端口号:”
“最好叫它portNum之类的东西。”
响应以下几行:
for(int i = 1; i <= boat.getLastPort(); ++i){
boat.load();
boat.move(i);
boat.unload();
}
我的第一个问题是,这是合理的建议,还是不值得?我很少看到命名循环变量。我认为大多数人会立即知道在这种情况下发生了什么(在程序其余部分的上下文中)。
第二次也是最后一次反馈:
"首先,方法名需要以小写字母开头,而不是大写。这是OOP中非常强的约定。但更糟糕的是,没有理由通过引用传入范围值。请求的值是返回,这就是方法通常如何相互协作。” --- “...没有程序想要调用类方法并通过引用传递任何内容:您永远不会信任具有程序变量的类。在方法中使用按值传递。”
此引用引用此成员函数:
int FerryBoat::Rand(const int& range)
{
return rand() % (range+1);
}
分配需要成员函数,否则我会在类之外创建一个宏来执行它。说明没有指定名称,所以我只是在库函数之后命名它,但我想我应该随机命名它,这样它就不会有一个大写的第一个字母。
无论如何我的第二个问题是:
如果一个函数引用了 const 数据(const 变量听起来很矛盾),你为什么不相信它呢?就不能因为 constness 而改变数据吗?
【问题讨论】:
-
通过 const 引用传递可以为您节省一份副本,这对于大型对象很重要。对于像
int和double这样的小输入参数,约定是按值传递,因为通过引用传递没有任何好处。 -
虽然我不同意老师关于 OOP 通常需要特定约定的观点,但我仍然认为如果程序员偏离特定约定,可以扣分。如果团队中的一名程序员使用不同的约定,那真的很烦人。
标签: c++ c class coding-style