【发布时间】:2019-07-18 15:54:50
【问题描述】:
我有静态功能,仅限于某些上下文,例如仅适用于文档。有 2 种替代方法可以将其定义为顶级函数或对象中的函数。
1.
package com.armsoft.mtrade.data.pref
import com.armsoft.mtrade.App
import com.armsoft.mtrade.domain.model.DocSaveType
object DocPrefManager {
private const val DOC_PREF = "DOC_PREF"
private const val KEY_ORDER_SAVE_TYPE = "KEY_ORDER_SAVE_TYPE"
@JvmStatic
fun setOrderSaveType(orderSaveType: DocSaveType) {
val context = App.getContext()
val sharedPreferences = context.getSharedPreferences(DOC_PREF, 0)
val editor = sharedPreferences.edit()
editor.putString(KEY_ORDER_SAVE_TYPE, orderSaveType.getCode())
editor.commit()
}
}
2.
package com.armsoft.mtrade.data.pref
import com.armsoft.mtrade.App
import com.armsoft.mtrade.domain.model.DocSaveType
fun setOrderSaveType(orderSaveType: DocSaveType) {
val context = App.getContext()
val sharedPreferences = context.getSharedPreferences(DocPrefManager.DOC_PREF, 0)
val editor = sharedPreferences.edit()
editor.putString(DocPrefManager.KEY_ORDER_SAVE_TYPE, orderSaveType.getCode())
editor.commit()
}
顶级函数的优点是它没有被包装在一个对象中,缺点是它可以在没有类名前缀的情况下从任何地方访问。这种情况是否有优点或缺点或最佳实践?
【问题讨论】: