【问题标题】:API request good practiceAPI 请求良好实践
【发布时间】:2018-12-02 10:56:35
【问题描述】:

我正在开发一个移动应用程序,其中有一个 requests 类负责向服务器发送请求。什么是一个好的做法,在访问它的类的构造函数中初始化这个请求类,然后​​调用函数,或者将 api 函数声明为静态,这样函数就可以在没有事先初始化的情况下调用?

【问题讨论】:

  • 在构造函数中用于单元可测试性/解耦目的。不过可能会使用更多内存,因此这取决于您的应用程序的要求。
  • @ryanwebjackson 你能告诉我更多它将如何帮助更好的单元测试吗?
  • 当你进行单元测试时,你可以模拟出“请求”类,这样你就不会测试它,你只是测试目标/被测类。您也可以传入不同类型的“请求”类,并且您的目标类不必更改。
  • @ryanwebjackson 我明白了,谢谢 :)

标签: api architecture dart mobile-development


【解决方案1】:

如果您希望请求共享实例变量,例如 http.Client,您应该更喜欢构造函数变体。正如 ryanwebjackson 所说,它还使测试更容易。如果它们只是不共享信息的函数的集合,那么静态方法就可以了。

如果您担心实例化几个资源密集型对象,那么您可以创建惰性初始化昂贵任务的 getter,例如

abstract class Request {
  final Client client;
  var _loadsOfData;

  Request(this.client);

  Future get loadsOfData async => _loadsOfData ??= _fetchLoadsOfData();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    相关资源
    最近更新 更多