1
Jooooooooo 2022 年 8 月 31 日
细说说业务场景.
|
2
billgreen1 2022 年 8 月 31 日 via iPhone
终于遇到一个 xy problem
|
3
billgreen1 2022 年 8 月 31 日 via iPhone |
4
EminemW OP @Jooooooooo 就是我一个数据处理类有一些方法 A ,这些方法 A 是需要依赖外部数据的,并且这些数据需要提前处理成方法依赖的格式。我目前是在调用方法之前,先调用依赖数据处理函数,将数据处理成相应的格式,再赋值给类的属性。 方法 A 在执行的时候,再取出需要的数据。这样的问题是调用者可能忘记提前设置方法 A 需要的数据,而如果是把依赖的数据通过方法参数的形式传入,又会导致方法参数太多
|
5
lmshl 2022 年 8 月 31 日
f1 :: A -> B
f2 :: C -> D f3 :: B -> D -> E f4 :: E -> R let b = f1(a) let d = f2(c) let e = f3(b, d) let result = f4(e) 直接把业务依赖编码进类型里不就完事了? |
6
micean 2022 年 8 月 31 日
方法参数太多可以考虑把参数整合到一个类里
|
7
Jooooooooo 2022 年 8 月 31 日
@EminemW 咋可能忘记...感觉你没抓住问题的重点.
|
8
jamel 2022 年 8 月 31 日
简单,用函数解决啊,你是什么语言
|
9
EminemW OP @Jooooooooo 可能是我设计有问题
type Handler struct { A map[string]interface{} B map[string]interface{} C map[string]interface{} D map[string]interface{} E map[string]interface{} } func (a *Handler) SetA(inputList []interface{}) { for _, input := range inputList { a.A["key"] = input } } func (a *Handler) DoA() (result map[string]string, err error) { // do something return } func (a *Handler) DoB() (result map[string]string, err error) { // do something return } func (a *Handler) DoC() (result map[string]string, err error) { // do something return } func NewHandler() Handler { return Handler{ A: map[string]interface{}{}, B: map[string]interface{}{}, C: map[string]interface{}{}, D: map[string]interface{}{}, E: map[string]interface{}{}, } } func main() { instance := NewHandler() instance.SetA([]interface{}{}) //忘记 SetB SetC result, err := instance.DoA() result, err = instance.DoB() result, err = instance.DoC() } |
12
renmu 2022 年 8 月 31 日 via Android
怎么会忘记呢,你调用处理数据的函数然后不传数据是吧。
|
14
xiaojianghu 2022 年 8 月 31 日
感觉可以设计成 A 、B 、C 、D 、E 为内部类对象,Do 方法在内部类实现,可以抽象出来一个接口,SetA 返回 A 对象
|
15
xiaojianghu 2022 年 8 月 31 日
instance.SetA().Do()
|
16
jamel 2022 年 8 月 31 日
fun a(initData: () -> Unit, handlerData: () -> Map<String, String>): String {
initData() val map = handlerData() return "" } fun main() { a({ // 初始化数据 val str = "fdsa" }, { // 数据处理 val substring = "fdas".substring(1, 2) mapOf() }) } |
17
fkdtz 2022 年 8 月 31 日
如果你参数是必传的,那再怎么处理,这个参数的值总得被初始化吧,你期望是怎样的呢?
|
18
justanetizen 2022 年 8 月 31 日
middleware
|