【问题标题】:Naming convention for methods returning RxJava's Completable返回 RxJava 的 Completable 的方法的命名约定
【发布时间】:2017-10-20 09:00:10
【问题描述】:

我有一个带有视图类(FragmentActivity)的 Android 应用程序观察其 ViewModel

ViewModel 公开诸如 getUserName 之类的方法,它返回 Observable<String>。虽然也许有可能找到一个更好的名字(也许是observeUserName),但我对现在的名字很满意——它很有解释性。

然而,这里开始了困难的部分:ViewModel 也可以告诉视图执行一些操作 - 例如关闭自身,弹出回栈等。对于这种情况,ViewModel 定义了以下方法(以及对应的Subject):

class ViewModel {
   // other methods, fields

   // ViewModel can call returnToPreviousScreen.onComplete()
   CompletableSubject returnToPreviousScreen = CompletableSubject.create();

   Completable returnToPreviousScreen() { return returnToPreviousScreen; }
}

在我看来,这个方法的名字很糟糕。但是我找不到更好的东西。 observeWhenToReturnToPreviousScreen 之类的东西可能更具解释性,但难以阅读。

那么,对于这些方法的命名是否有任何建议或常用的做法?

【问题讨论】:

    标签: android rx-java naming-conventions naming reactive


    【解决方案1】:

    命名问题没有统一的答案,所以您唯一能得到的就是意见


    经验法则

    我在 rx-java 中命名的方法通常着眼于两件事:

    1. 它是否表示发出事件的“流”(通常使用名词的复数形式)?
    2. 它是否与 rx java 方法链的其他部分配合良好,尤其是 subscribe 方法?

    上述两种情况通常都可以简化为尝试将方法的名称放在这句话中:

    此代码订阅{name_of_the_method}


    示例

    A)getUserName

    此代码订阅getUserName

    ? 这句话确实真的有意义,因为getUserName 没有表达stream。恰恰相反,它表明您可以使用一个值get

    getUserName().subscribe()
    

    B)observeUserName

    此代码订阅observeUserName

    ? 虽然方法种类表达了事件的stream,但它不适用于subscribe。暴露Observable 的方法不是提供有关observing 的信息的地方。该方法的使用者将观察该方法返回的内容。

    observeUserName().subscribe()
    

    C)userNames

    此代码订阅userNames

    ?? 这在某些情况下可能有效。它很好地表达了正在发出的userName 项目流,并且与subscribe 配合得很好。这实际上取决于特定场景,因为它表明您可以预期多个userNames,而您确实想观察单个userName 的变化。

    userNames().subscribe()
    

    C)userNameChanges

    此代码订阅userNameChanges

    ? 这个方法很好地表达了有一个项目流(“更改”事件),它与subscribe 方法配合得很好。

    userNameChanges().subscribe()
    

    返回上一屏幕

    就您的returnToPreviousScreen 案例而言,我想我最终会使用类似的东西:

    此代码订阅returnRequests()

    此代码订阅previousScreenRequests()

    甚至是单数形式,因为流中只能发出一个事件:

    此代码订阅previousScreenRequest()

    (不是一个问题的主题,但我想我会使用Single<Unit> 而不是Completable,来表达一个单一的事件发射而不是一个完成......但也许这只是我)。

    【讨论】:

      猜你喜欢
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 2013-03-31
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      相关资源
      最近更新 更多