【问题标题】:Difference between getter and a regular method in DartDart中getter和常规方法的区别
【发布时间】:2020-02-16 15:21:11
【问题描述】:

我刚刚接触到 Flutter 的 BLoC 架构。在这里,我希望创建一个Bloc 类,它将帮助我将用户输入转换为流数据的形式。要完成这项任务,假设首先我创建了一个名为 emailBloc 类实例,然后,

  1. 使用sn-p 0 然后调用email.emailController.sink.add(some_string)
  2. 或者,使用sn-p 1 然后调用email.streamEmail(some_string)
  3. 或者,使用 sn -p 2 代码然后调用email.streamEmail(some_string)

将字符串输入添加到流中

代码sn-ps:

//Snippet 0 : w/o any `method`
class Bloc{
 final emailController = StreamController<String>();
}
//Snippet 1 : using regular 'method'
class Bloc{
 final emailController = StreamController<String>();
 void streamEmail(String value) => emailController.sink.add(value);
}
//Snippet 2 : using 'get' based 'method'
class Bloc{
 final emailController = StreamController<String>();
 Function(String) get streamEmail => emailController.sink.add;
}

我了解到,就代码可读性而言,使用 sn-p 1 或 2 会更好。 我知道 sn-p 1& 2 只是做同一件事的两种不同方式。但是,我不清楚 sn-p 2 通过使用 getter 方法带来的差异。

来自A tour of the Dart language

Getter 和 setter 是提供对对象属性的读写访问权限的特殊方法。

目前,我对 getter 的唯一了解是它们代表了在类中定义方法的另一种方法。所以,准确地说,我的问题是:

  1. 使用 getter 方法会导致增强或应用内删除。性能?
  2. 何时以及为什么应该使用 sn-p 2 类型的类定义而不是 sn-p 1?

【问题讨论】:

    标签: flutter dart getter-setter


    【解决方案1】:

    getter 方法的使用是否会导致应用程序的增强或删除?性能?

    不,使用 getter/setter 代替方法不会影响性能。

    何时以及为什么我应该使用 sn-p 2 类型的类定义而不是 sn-p 1?

    何时使用 getter/setter 是一个关于品味的问题,一些开发人员比其他开发人员更有可能使用它们。我想一般的设计目标应该是 getter/setter 就像对象上的普通属性一样,因此除了获取/设置属性之外,不应该做出任何额外的未知行为。 (例如,获取对象的属性最终会将一些文件保存到文件系统中)。

    在您的示例中,我将使用 sn-p 1 (并且可能使用不同的方法名称),因为您的示例实际上并不是使用属性的好用例。 Snippet 2 似乎是强制使用 getter 的巧妙尝试,但由于 getter 最终返回一个函数,因此结果有点奇怪。

    但同样,这是一个关于品味的问题,我相信有些开发人员会使用 sn-p 2。

    【讨论】:

    猜你喜欢
    • 2011-04-08
    • 2012-02-27
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 2013-12-22
    • 2015-05-28
    • 2019-07-21
    • 2021-04-20
    相关资源
    最近更新 更多