Pio*_*ski 6 android naming naming-conventions rx-java reactive
我有一个带有视图类(Fragment,Activity)的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; }
}
Run Code Online (Sandbox Code Playgroud)
我认为该方法的名称很糟糕。我找不到更好的东西。诸如此类的observeWhenToReturnToPreviousScreen内容可能更具解释性,但难以阅读。
因此,是否有建议或命名方法来命名此类方法?
命名问题没有统一的答案,所以你唯一能得到的就是意见。
我在 rx-java 中命名的方法通常着眼于两件事:
subscribe方法?以上两种通常都可以简化为尝试将方法的名称放在这句话中:
此代码订阅到
{name_of_the_method}。
一种) getUserName
此代码订阅到
getUserName。
这句话没有真正的意义,因为getUserName没有表达stream。恰恰相反,它表明您可以使用一个值get。
getUserName().subscribe()
Run Code Online (Sandbox Code Playgroud)
乙) observeUserName
此代码订阅到
observeUserName。
虽然方法 kind-of 表达了stream事件的 ,但它不能很好地与subscribe. 方法公开Observable不是有关 的信息的地方observing。该方法的使用者将观察该方法返回的内容。
observeUserName().subscribe()
Run Code Online (Sandbox Code Playgroud)
C) userNames
此代码订阅到
userNames。
这在某些情况下可能有效。它很好地表达了userName正在发出的项目流并且与subscribe. 这真的取决于特定的场景,因为它表明您可以期待多个,userNames而您真的想观察单个userName变化的方式。
userNames().subscribe()
Run Code Online (Sandbox Code Playgroud)
C) userNameChanges
此代码订阅到
userNameChanges。
这个方法很好地表达了有一个项目流(“更改”事件)并且它与subscribe方法一起工作得很好。
userNameChanges().subscribe()
Run Code Online (Sandbox Code Playgroud)
就您的returnToPreviousScreen情况而言,我想我最终会使用以下内容:
此代码订阅到
returnRequests()。
或者
此代码订阅到
previousScreenRequests()。
甚至是单数形式,因为流中只能发出一个事件:
此代码订阅到
previousScreenRequest()。
(不是问题的主题,但我想我会使用Single<Unit>而不是Completable, 来表达单个事件发射而不是完成......但也许这只是我)。
| 归档时间: |
|
| 查看次数: |
417 次 |
| 最近记录: |