返回 RxJava 的 Completable 的方法的命名约定
Naming convention for methods returning RxJava's Completable
我有 Android 应用,其视图 class(Fragment
、Activity
)观察其 ViewModel
。
ViewModel
公开了 getUserName
和 returns 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
之类的内容可能更具解释性但难以阅读。
那么,对于命名此类方法,是否有任何建议或常用做法?
命名问题没有统一的答案,所以你能得到的只有意见。
经验法则
我在 rx-java 中的命名方法通常会考虑两件事:
- 它是否表达了"stream"个发出的事件(通常用名词的复数形式)?
- 它是否适用于 rx java 方法链的其他部分,尤其是
subscribe
方法?
以上两个通常可以简化为尝试将方法名称放在这句话中:
This code subscribes to {name_of_the_method}
.
例子
A) getUserName
This code subscribes to getUserName
.
这句话 没有 真的有意义,因为 getUserName
没有表达 stream
。恰恰相反,它表明有一个值可以 get
.
getUserName().subscribe()
B) observeUserName
This code subscribes to observeUserName
.
虽然方法 kind-of 表达了事件的 stream
,但它不适用于 subscribe
。公开 Observable
的方法不是提供有关 observing
的信息的地方。该方法的使用者将观察该方法 returns.
observeUserName().subscribe()
C) userNames
This code subscribes to userNames
.
这在某些情况下可能有效。它很好地表达了正在发出的 userName
项目流,并且与 subscribe
配合得很好。这实际上取决于特定场景,因为它表明您可以期待多个 userNames
,而您真的想观察单个 userName
是如何变化的。
userNames().subscribe()
C) userNameChanges
This code subscribes to userNameChanges
.
这个方法很好地表达了有一个项目流("change" 事件)并且它与 subscribe
方法一起工作得很好。
userNameChanges().subscribe()
Return 到上一屏幕
就您的 returnToPreviousScreen
案例而言,我想我最终会使用类似的东西:
This code subscribes to returnRequests()
.
或
This code subscribes to previousScreenRequests()
.
甚至是单数形式,因为流中只能发出一个事件:
This code subscribes to previousScreenRequest()
.
(不是问题的主题,但我想我会使用 Single<Unit>
而不是 Completable
,来表达单一事件发射而不是完成...但也许这只是我).
我有 Android 应用,其视图 class(Fragment
、Activity
)观察其 ViewModel
。
ViewModel
公开了 getUserName
和 returns 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
之类的内容可能更具解释性但难以阅读。
那么,对于命名此类方法,是否有任何建议或常用做法?
命名问题没有统一的答案,所以你能得到的只有意见。
经验法则
我在 rx-java 中的命名方法通常会考虑两件事:
- 它是否表达了"stream"个发出的事件(通常用名词的复数形式)?
- 它是否适用于 rx java 方法链的其他部分,尤其是
subscribe
方法?
以上两个通常可以简化为尝试将方法名称放在这句话中:
This code subscribes to
{name_of_the_method}
.
例子
A) getUserName
This code subscribes to
getUserName
.
这句话 没有 真的有意义,因为 getUserName
没有表达 stream
。恰恰相反,它表明有一个值可以 get
.
getUserName().subscribe()
B) observeUserName
This code subscribes to
observeUserName
.
虽然方法 kind-of 表达了事件的 stream
,但它不适用于 subscribe
。公开 Observable
的方法不是提供有关 observing
的信息的地方。该方法的使用者将观察该方法 returns.
observeUserName().subscribe()
C) userNames
This code subscribes to
userNames
.
这在某些情况下可能有效。它很好地表达了正在发出的 userName
项目流,并且与 subscribe
配合得很好。这实际上取决于特定场景,因为它表明您可以期待多个 userNames
,而您真的想观察单个 userName
是如何变化的。
userNames().subscribe()
C) userNameChanges
This code subscribes to
userNameChanges
.
这个方法很好地表达了有一个项目流("change" 事件)并且它与 subscribe
方法一起工作得很好。
userNameChanges().subscribe()
Return 到上一屏幕
就您的 returnToPreviousScreen
案例而言,我想我最终会使用类似的东西:
This code subscribes to
returnRequests()
.
或
This code subscribes to
previousScreenRequests()
.
甚至是单数形式,因为流中只能发出一个事件:
This code subscribes to
previousScreenRequest()
.
(不是问题的主题,但我想我会使用 Single<Unit>
而不是 Completable
,来表达单一事件发射而不是完成...但也许这只是我).