平时经常写一些转换函数,比如
1.将一个 List ,以某个字段作为 Key ,转换成一个 Map
2.查询某个分组条件的数据,如 select a,b from table group by a,b;
3.....等等
像这类函数大家是怎么命名的,对于 1. 我经常是写一个叫 mapxxxxx 的函数,也不知道合不合理,问问大家意见
1
tairan2006 2022-05-24 14:03:22 +08:00 via Android
这两个不都是写 lambda 表达式处理么
|
2
akakidz 2022-05-24 14:05:17 +08:00
XxxList2Map...
|
3
EminemW OP @tairan2006 golang 没有😭
|
4
shishiyi 2022-05-24 14:07:52 +08:00
这个对于 java 来说,stream 流处理一下,sql 都不用写
|
5
Vaspike 2022-05-24 14:10:35 +08:00
1. xxList2Map() or xxListToMap()
2. findAAndBGroupBy() -------------------------- 我一贯的做法就是方法 /函数名别怕起的太长,可以不在意语法,但逻辑关系要说清楚,比如`and`,`by`,`with`,再就是动词说清楚,比如`find`,`add`,`merge`,符合这两点后往里填名词(变量类型)就完事了 |
6
GeruzoniAnsasu 2022-05-24 14:48:53 +08:00
我倾向于以结果命名而不是动作
比如我会写 flattened() 而不是 xxMapToList 你说的 1 的情况不知道是不是 [{key:"k1",name:"n1"},{key:"k1",name:"n1"}] => {k1:"n1",k2:"n2"},如果是,那么结合我猜你这问的是 CRUD 逻辑的上下文,我隐约感觉你代码逻辑结构不太对,要么是 查询其实可以多做点事,要么是数据传输过程中多了不必要的结构转换(比如,其实应该让前端自己转)。我几乎没写过 list to map ,只有 map to list 2. 我会写 var goupedScope = func(args...) func(tx) tx {} byXXX := groupedScope(XXX) q:=db.Scopes(byXXX(db), ...).Where().Find() ---- golang 没有 lambda 「表达式」,可是有匿名函数啊。所有这些转换函数都会污染整个 package 下其它文件的函数命名,所以我应该不会想把它们真的写成一个函数 |
7
tairan2006 2022-05-24 16:37:00 +08:00
@EminemW 写匿名函数啊…
|