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

函数取名纠结综合症

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

    说来也是,遇到这情况怎么样解决呢?
    jsonline
        9
    jsonline  
       2014 年 10 月 21 日 via Android
    @kmvan 函数以动词开头,有啥好纠结的。
    Doubear
        10
    Doubear  
       2014 年 10 月 21 日
    @jsonline 哈哈 正解~~~

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

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

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

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

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

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

    另一方面,要明确函数的功能,举个反例,我们项目中有个方法是做迁移游客账号数据到会员账号的,结果命名这方法的人理解为同步了,于是命名为「syncUserData」了,这样光看名字就会误解它的功能了,我觉得准确的描述应该是「migrateUserData」.
    jsonline
        20
    jsonline  
       2014 年 10 月 21 日
    @kmvan 有些项目一开始的命名就是一团糟,神仙也救不了。
    jsonline
        21
    jsonline  
       2014 年 10 月 21 日
    @drush 那就没法了,只能依着它。
    c742435
        22
    c742435  
       2014 年 10 月 21 日
    中文命名
    oott123
        23
    oott123  
       2014 年 10 月 22 日 via Android
    @kmvan php的函命名不是臭名昭著么…
    看手册里 str 开头的,和 str_ 开头的……简直233
    Doubear
        24
    Doubear  
       2014 年 10 月 22 日
    @kchum 前面动词,方便调用的时候IDE给提示后好分辨,后面驼峰或者直接一线只是怎么好看怎么来
    hitsmaxft
        25
    hitsmaxft  
       2014 年 10 月 22 日
    好的命名? 见 oc .. 不过那么长的名字, 写代码的人烦死了
    g0t3n
        26
    g0t3n  
       2014 年 10 月 22 日
    @sunocean 前缀+动词+域(可选)+名词+加写好注释
    get it [prefix_]+动词+[domain+]+名词 是个好方法
    对写好 doc string 怎么看
    我比较欣赏的是
    def fun(arg1):
    ....'''
    ....Arg:
    ........arg1 - do something
    ....Return:
    ........list - xxx
    ....Raise:
    ........raise notFound exception
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   945 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:44 · PVG 04:44 · LAX 12:44 · JFK 15:44
    ♥ Do have faith in what you're doing.