假设我这里有三种方法:
方法1:
void function_1() {
QString("%1").arg(QDate::currentDate().toString("MM/dd/yy"));
}
void function_2() {
QString("%1").arg(QDate::currentDate().toString("MM/dd/yy"));
}
因为我可能要替换多个参数,那么这一行会很长,为了使函数更具可读性,我使用了方法 2:方法 2:
void function_1() {
QString currentDate = QDate::currentDate().toString("MM/dd/yy");
QString("%1").arg(currentDate);
}
void function_2() {
QString currentDate = QDate::currentDate().toString("MM/dd/yy");
QString("%1").arg(currentDate);
}
但是我注意到,在我的许多函数中需要使用QString currentDate
,即使有些人说Variables should be declared as locally as possible
,如果我这样做,这意味着我必须在每个函数中编写相同的代码。所以我应该使用方法 3 代替在 class private
中设置QString currentDate
.
方法3:
class Foo {
public:
Foo() {
currentDate = QDate::currentDate().toString("MM/dd/yy");
}
private:
QString currentDate;
void function_1() {
QString("%1").arg(currentDate);
}
void function_2() {
QString("%1").arg(currentDate);
}
};
人们说变量应该尽可能在本地声明是正确的,因为这可以消除将来不同变量之间的潜在冲突(这成为一个问题,尤其是在具有数千行代码的大型项目中(。
我会在您的function
之外定义QString currentDate
,然后将其作为参数提供给function_1()
和function_2()
,因为这将消除代码的重复。
如果在构造函数中计算一次currentDate
,则该值在变量的生存期内将保持不变。
在这种情况下,如果变量不会跨天生存,那么没问题。
但如果它会(例如 23:59:59 -> 00:00:00(,那么正确的方法是声明一个函数:
QString currentDate()
{
return QDate::currentDate().toString("MM/dd/yy");
}
请考虑将此函数设为静态函数,因为它不会从类调用任何函数和变量。