函数取名纠结综合症 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wangccddaa
V2EX    问与答

函数取名纠结综合症

  •  
  •   wangccddaa 2014-10-21 15:49:46 +08:00 4641 次点击
    这是一个创建于 4009 天前的主题,其中的信息可能已经有所发展或是发生改变。
    每次要给工程,类,函数取个合适的名称的时候就特别纠结,想了好几个名字都觉得不能很好表达这个类(函数)的作用,大家都是怎么解决这个问题的?
    第 1 条附言    2014-10-21 18:27:27 +08:00
    刚才有一点说偏了,我其实想问的是怎么从函数名称一眼就可以看出函数功能,不需要额外的注释等等,函数命名规则只是规定了编程语言的函数的统一样式,这个可能需要一定的积累~
    26 条回复    2014-10-22 14:06:52 +08:00
    fangzhzh
        1
    fangzhzh  
       2014-10-21 15:58:08 +08:00 via Android   1
    学好英语
    angelface
        2
    angelface  
       2014-10-21 16:02:38 +08:00   1
    jsonline
        3
    jsonline  
       2014-10-21 16:02:57 +08:00 via Android   1
    备好字典
    drush
        4
    drush  
       2014-10-21 16:06:35 +08:00   3
    就算英语好,遇到 object_get() 跟 get_object() 这两种风格都够你纠结一番。
    zooeys
        5
    zooeys  
       2014-10-21 16:28:20 +08:00
    不是有规范么? 按照规范来~~~
    chmlai
        6
    chmlai  
       2014-10-21 16:33:36 +08:00
    Naming is hard; 老外都这么说.
    sojingle
        7
    sojingle  
       2014-10-21 16:39:27 +08:00
    不去试图取个短名字的话,就会容易很多
    kmvan
        8
    kmvan  
       2014-10-21 16:48:19 +08:00 via Android
    @drush 就算英语好,遇到 object_get() 跟 get_object() 这两种风格都够你纠结一番。

    说来也是,遇到这情况怎么样解决呢?
    jsonline
        9
    jsonline  
       2014-10-21 16:48:55 +08:00 via Android
    @kmvan 函数以动词开头,有啥好纠结的。
    Doubear
        10
    Doubear  
       2014-10-21 17:05:42 +08:00
    @jsonline 哈哈 正解~~~

    我一般命名就是动作在前,中间一线,后边驼峰、、、、如:get_userData()
    也有时候是直接全部小写,每个词中间一线、、、、、
    蛋疼
    drush
        11
    drush  
       2014-10-21 17:07:07 +08:00
    @jsonline

    我也知函数以动词开头, 但很多其他cms ,框架不按这个的。

    例如在 drupal 里,很多都是动词结尾的, 如 node_load 等。
    Laravel 里的 helper function 也是,array_fetch() array_get() ....
    kchum
        12
    kchum  
       2014-10-21 17:08:09 +08:00
    @Doubear 下划线跟驼峰都上,有点看不习惯啊~~
    curiousjude
        13
    curiousjude  
       2014-10-21 17:22:30 +08:00
    这个世界性难题。

    就我个人经验而言,遵循规范(语言层面,框架层面等等都可以Google到比较通用的规范)就可以解决大部分问题了。同时自己也做一下积累,建个自己的词汇库,这在涉及到业务方面的命名时,很有效果。
    kmvan
        14
    kmvan  
       2014-10-21 17:22:44 +08:00 via Android
    @jsonline 函数以动词开头,有啥好纠结的。

    php也不是的吧,例如 ini_set()...
    sunocean
        15
    sunocean  
       2014-10-21 17:49:30 +08:00
    前缀+动词+域(可选)+名词+加写好注释
    angelface
        16
    angelface  
       2014-10-21 18:22:19 +08:00
    @drush 定好自己的规范, 至于别人怎么用, 那就管不了了。
    wangccddaa
        17
    wangccddaa  
    OP
       2014-10-21 18:28:02 +08:00
    @curiousjude 是个好方法~
    mhycy
        18
    mhycy  
       2014-10-21 18:46:47 +08:00
    动词在后便与排序
    动词在前便与阅读
    curiousjude
        19
    curiousjude  
       2014-10-21 19:10:15 +08:00
    我觉得要从「从函数名称一眼就可以看出函数功能」,需要一定的积累。

    一些常见的动作,最好使用大家普遍使用的,比如入队列,用「enqueue」,而不要用「addToQueue」之类的。

    另一方面,要明确函数的功能,举个反例,我们项目中有个方法是做迁移游客账号数据到会员账号的,结果命名这方法的人理解为同步了,于是命名为「syncUserData」了,这样光看名字就会误解它的功能了,我觉得准确的描述应该是「migrateUserData」.
    jsonline
        20
    jsonline  
       2014-10-21 19:55:41 +08:00
    @kmvan 有些项目一开始的命名就是一团糟,神仙也救不了。
    jsonline
        21
    jsonline  
       2014-10-21 19:56:26 +08:00
    @drush 那就没法了,只能依着它。
    c742435
        22
    c742435  
       2014-10-21 23:58:37 +08:00
    中文命名
    oott123
        23
    oott123  
       2014-10-22 00:16:43 +08:00 via Android
    @kmvan php的函命名不是臭名昭著么…
    看手册里 str 开头的,和 str_ 开头的……简直233
    Doubear
        24
    Doubear  
       2014-10-22 09:06:12 +08:00
    @kchum 前面动词,方便调用的时候IDE给提示后好分辨,后面驼峰或者直接一线只是怎么好看怎么来
    hitsmaxft
        25
    hitsmaxft  
       2014-10-22 12:11:31 +08:00
    好的命名? 见 oc .. 不过那么长的名字, 写代码的人烦死了
    g0t3n
        26
    g0t3n  
       2014-10-22 14:06:52 +08:00
    @sunocean 前缀+动词+域(可选)+名词+加写好注释
    get it [prefix_]+动词+[domain+]+名词 是个好方法
    对写好 doc string 怎么看
    我比较欣赏的是
    def fun(arg1):
    ....'''
    ....Arg:
    ........arg1 - do something
    ....Return:
    ........list - xxx
    ....Raise:
    ........raise notFound exception
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4686 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 01:05 PVG 09:05 LAX 18:05 JFK 21:05
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86