我正在用C++编写一个物理模拟(Ising模型),它在方格上运行.我的程序的核心是我的Ising类,它带有一个构造函数,用于调用晶格的行和列尺寸.我还有另外两种方法来设置系统的其他参数(温度和初始状态),在进化系统之前必须调用它们!因此,例如,示例程序可能如下所示
int main() {
Ising system(30, 30);
system.set_state(up);
system.set_temperature(2);
for(int t = 0; t < 1000; t++) {
system.step();
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果在system.step()之前未调用system.set _*()方法,则system.step()会引发异常,提醒用户注意该问题.我用这种方式实现它来简化我的构造函数; 这是不好的做法吗?
Pét*_*rök 13
建议尽可能将所有必需参数放在构造函数中(当然有例外,但这些应该是罕见的 - 到目前为止我已经看到了一个真实的例子).这样您就可以更轻松,更安全地使用您的课程.
另请注意,通过简化构造函数,您可以使客户端代码更复杂,哪种IMO是一个不好的权衡.构造函数只编写一次,但调用者代码可能需要写入多次(增加了要写入的大量代码和错误的可能性).