以下类具有多个参数,但只有一些需要最终确定;我的问是,我还应该将这些最终变量设为私有,还是这样做多余?
class Car {
final double _galInFullTank;
get galInFullTank => _galInFullTank;
double _miDrivenToEmpty;
get miDrivenToEmpty => _miDrivenToEmpty;
double _mpg;
get mpg => _mpg;
void update(double newMiDrivenToEmpty) {
_miDrivenToEmpty = newMiDrivenToEmpty;
_mpg = _miDrivenToEmpty/_galInFullTank;
}
Car({galInFullTank = 12, miDrivenToEmpty = 300}) :
_galInFullTank = galInFullTank,
_miDrivenToEmpty = miDrivenToEmpty,
_mpg = miDrivenToEmpty/galInFullTank;
}
}
答案 0 :(得分:0)
它有一些用例。它可以用于向下转换变量。
例如,使用RxDart,我们可以:
recursiveProxy: any = {
get: this.recursiveProxyGetter,
set: this.recursiveProxySetter
}
这隐藏了实现细节。
它也可以用来在吸气剂内部做一些额外的事情。例如,Mobx使用它来知道使用了哪些值。
但是直接暴露变量而不进行修改或额外的计算是没有意义的。
答案 1 :(得分:0)
创建私人成员final
并非多余。通常,私有和final
是正交的。例如,考虑如下内容:
class Foo {
final List<int> someList;
}
仅仅因为Foo.someList
是final
并不能阻止外部代码对其进行修改(例如someFoo.someList.clear()
)。
您应该将不希望成为API一部分的东西设为私有。