V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
EminemW
V2EX  ›  问与答

关于函数/方法命名

  •  
  •   EminemW · 2022-05-24 13:00:51 +08:00 · 1080 次点击
    这是一个创建于 696 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    3.....等等

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

    7 条回复    2022-05-24 16:37:00 +08:00
    tairan2006
        1
    tairan2006  
       2022-05-24 14:03:22 +08:00 via Android
    这两个不都是写 lambda 表达式处理么
    akakidz
        2
    akakidz  
       2022-05-24 14:05:17 +08:00
    XxxList2Map...
    EminemW
        3
    EminemW  
    OP
       2022-05-24 14:06:29 +08:00 via iPhone
    @tairan2006 golang 没有😭
    shishiyi
        4
    shishiyi  
       2022-05-24 14:07:52 +08:00
    这个对于 java 来说,stream 流处理一下,sql 都不用写
    Vaspike
        5
    Vaspike  
       2022-05-24 14:10:35 +08:00
    1. xxList2Map() or xxListToMap()
    2. findAAndBGroupBy()
    --------------------------
    我一贯的做法就是方法 /函数名别怕起的太长,可以不在意语法,但逻辑关系要说清楚,比如`and`,`by`,`with`,再就是动词说清楚,比如`find`,`add`,`merge`,符合这两点后往里填名词(变量类型)就完事了
    GeruzoniAnsasu
        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 下其它文件的函数命名,所以我应该不会想把它们真的写成一个函数
    tairan2006
        7
    tairan2006  
       2022-05-24 16:37:00 +08:00
    @EminemW 写匿名函数啊…
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5288 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:48 · PVG 15:48 · LAX 00:48 · JFK 03:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.