我有和Android应用一起使用视图类(Fragment
,Activity
)观察其ViewModel
。
ViewModel
公开了返回getUserName
的{{1}}等方法。虽然也许有可能找到一个更好的名字(也许是Observable<String>
),但我对现在的名字感到满意 - 这很有说服力。
然而,这里开始了一个难点:observeUserName
也可以告诉视图执行某些操作 - 例如close close,pop backstack等。对于这种情况ViewModel
定义了以下方法(并且相应{ {1}}):
ViewModel
在我看来,这个方法的名字太可怕了。 Hovewer我找不到更好的东西。像Subject
这样的东西可能更具说明性,但很难阅读。
那么,是否有任何建议或常用的做法来命名这些方法?
答案 0 :(得分:1)
对命名问题没有统一的答案,所以我唯一能得到的就是意见。
我在rx-java中命名的方法通常看两件事:
subscribe
方法一起工作是否很好?以上两种情况通常都可以简化为尝试在此句子中放入方法名称:
此代码订阅到
{name_of_the_method}
。
A)getUserName
此代码订阅到
getUserName
。
?句子确实没有意义,因为getUserName
不表达stream
。相反,它表明您可以get
有一个值。
getUserName().subscribe()
B)observeUserName
此代码订阅到
observeUserName
。
?尽管方法kind-of表示事件的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
来表示单个事件而不是完成...但是也许这仅仅是我)。