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

函数取名纠结综合症

  •  
  •   wangccddaa · 2014-10-21 15:49:46 +08:00 · 4046 次点击
    这是一个创建于 3481 天前的主题,其中的信息可能已经有所发展或是发生改变。
    每次要给工程,类,函数取个合适的名称的时候就特别纠结,想了好几个名字都觉得不能很好表达这个类(函数)的作用,大家都是怎么解决这个问题的?
    第 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   ·   我们的愿景   ·   实用小工具   ·   2117 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:27 · PVG 18:27 · LAX 03:27 · JFK 06:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.