Arg*_*gon 7 getter-setter dart flutter
我刚刚接触 Flutter 的 BLoC 架构。在这里,我想创建一个Bloc类,它将帮助我以流数据的形式转换用户输入。为了完成这项任务,假设首先我创建了一个Bloc具有名称的类的实例,email然后,
email.emailController.sink.add(some_string)email.streamEmail(some_string)email.streamEmail(some_string)向流中添加字符串输入
代码片段:
//Snippet 0 : w/o any `method`
class Bloc{
final emailController = StreamController<String>();
}
Run Code Online (Sandbox Code Playgroud)
//Snippet 1 : using regular 'method'
class Bloc{
final emailController = StreamController<String>();
void streamEmail(String value) => emailController.sink.add(value);
}
Run Code Online (Sandbox Code Playgroud)
//Snippet 2 : using 'get' based 'method'
class Bloc{
final emailController = StreamController<String>();
Function(String) get streamEmail => emailController.sink.add;
}
Run Code Online (Sandbox Code Playgroud)
我了解到,在代码可读性方面,使用代码段 1 或 2 是一种更好的方法。我知道代码段 1 和 2 只是做同一件事的两种不同方式。但是,我不清楚代码段 2 通过使用 getter 方法带来的差异。
Getter 和 setter 是提供对对象属性的读写访问的特殊方法。
目前,我对 getter 的唯一理解是它们代表了在类中定义方法的另一种方法。所以,准确地说,我的问题是:
getter 方法的使用是否会导致应用程序的增强或下降。表现?
不,使用 getter/setter 代替方法不会影响性能。
何时以及为什么我应该使用代码段 2 类型的类定义而不是代码段 1?
何时使用 getter/setter 是一个关于品味的问题,一些开发人员比其他开发人员更有可能使用它们。我猜一般的设计目标应该是 getter/setter 像对象上的普通属性一样,因此除了获取/设置属性之外,不应该做出任何额外的未知行为。(例如,获取对象的属性最终会将一些文件保存到文件系统)。
在您的示例中,我将使用代码段 1(并且可能使用不同的方法名称),因为您的示例并不是使用属性的好用例。Snippet 2 似乎是强制使用 getter 的巧妙尝试,但最终有点奇怪,因为 getter 最终返回了一个函数。
但同样,这是一个关于品味的问题,我相信有一些开发人员会使用代码段 2。
| 归档时间: |
|
| 查看次数: |
1877 次 |
| 最近记录: |