class - 在 dart 中将 final 变量设为私有(private)是多余的吗?

标签 class flutter dart final private-members

下面的类有多个参数,但只有一些需要是final;我的问题是,我是否也应该将这些最终变量设为私有(private),或者这样做是否多余?

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 BehaviorSubject<Foo> _foo;
Stream<Foo> get foo => foo;

这隐藏了实现细节。

它也可以用来在 getter 内部做额外的事情。例如,Mobx 使用它来了解使用了哪些值。

但是直接公开变量而不进行修改或额外计算是没有意义的。

关于class - 在 dart 中将 final 变量设为私有(private)是多余的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56781537/

相关文章:

java - 如何让 'import java.net.*' 工作?

flutter - 任务 ':app:compileDebugKotlin'的执行失败。 flutter 朔迷离

C++ 多回调函数

java - 如何在 Eclipse 中使用外部 .class 文件?

Flutter:我应该如何访问此删除请求中的响应正文?

android - 如何解决错误 FAILURE : Build failed with an exception. * 其中:脚本 'C:\flutter\packages\flutter_tools\gradle\flutter.gradle' 行:1005

flutter - 很棒的对话框无法在Flutter应用中关闭

dart - 如何覆盖 Dart 中枚举的toString方法

flutter - Flutter 中的高效 Canvas 渲染

python - 将 self 传递给Python中的类函数