Class 在dart中使最终变量私有是多余的吗?
下面的类有多个参数,但只有一些参数需要是最终的;我的问题是,我是否应该将这些最终变量私有化,或者这样做是多余的Class 在dart中使最终变量私有是多余的吗?,class,flutter,dart,final,private-members,Class,Flutter,Dart,Final,Private Members,下面的类有多个参数,但只有一些参数需要是最终的;我的问题是,我是否应该将这些最终变量私有化,或者这样做是多余的 class Car { final double _galInFullTank; get galInFullTank => _galInFullTank; double _miDrivenToEmpty; get miDrivenToEmpty => _miDrivenToEmpty; double _mpg; get mpg
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;
}
}
它有一些用例。它可以用来向下转换变量 例如,使用RxDart,我们可以:
final behavior subject\u foo;
流get foo=>foo;
这隐藏了实现细节
它还可以用来在getter中做额外的事情。例如,Mobx使用它来了解使用了哪些值
但是直接公开变量而不进行修改或额外计算是毫无意义的。使私有成员成为final并不是多余的。一般来说,私人身份和最终身份是正交的。例如,考虑一些类似的事情:
class Foo {
final List<int> someList;
}
class-Foo{
最终名单;
}
仅仅因为Foo.someList
是final
并不能阻止外部代码修改它(例如someFoo.someList.clear()
)
您应该将您不想成为API一部分的内容设置为私有。Ty,您的提供程序包让我更喜欢Flutter dev!为了测试我对你答案的理解,你能回答这个问题吗?问:将
galInFullTank
公开(在我的简单情况下,你的用例都不适用)可以接受吗?