关于函数/方法命名

2022-05-24 13:00:51 +08:00
 EminemW

平时经常写一些转换函数,比如

1.将一个 List ,以某个字段作为 Key ,转换成一个 Map

2.查询某个分组条件的数据,如 select a,b from table group by a,b;

3.....等等

像这类函数大家是怎么命名的,对于 1. 我经常是写一个叫 mapxxxxx 的函数,也不知道合不合理,问问大家意见

1091 次点击
所在节点    问与答
7 条回复
tairan2006
2022-05-24 14:03:22 +08:00
这两个不都是写 lambda 表达式处理么
akakidz
2022-05-24 14:05:17 +08:00
XxxList2Map...
EminemW
2022-05-24 14:06:29 +08:00
@tairan2006 golang 没有😭
shishiyi
2022-05-24 14:07:52 +08:00
这个对于 java 来说,stream 流处理一下,sql 都不用写
Vaspike
2022-05-24 14:10:35 +08:00
1. xxList2Map() or xxListToMap()
2. findAAndBGroupBy()
--------------------------
我一贯的做法就是方法 /函数名别怕起的太长,可以不在意语法,但逻辑关系要说清楚,比如`and`,`by`,`with`,再就是动词说清楚,比如`find`,`add`,`merge`,符合这两点后往里填名词(变量类型)就完事了
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 下其它文件的函数命名,所以我应该不会想把它们真的写成一个函数
tairan2006
2022-05-24 16:37:00 +08:00
@EminemW 写匿名函数啊…

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/854943

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX