wangccddaa
V2EX  ›  问与答

函数取名纠结综合症

  •  
  •   wangccddaa · Oct 21, 2014 · 5514 views
    This topic created in 4400 days ago, the information mentioned may be changed or developed.
    每次要给工程,类,函数取个合适的名称的时候就特别纠结,想了好几个名字都觉得不能很好表达这个类(函数)的作用,大家都是怎么解决这个问题的?
    Supplement 1  ·  Oct 21, 2014
    刚才有一点说偏了,我其实想问的是怎么从函数名称一眼就可以看出函数功能,不需要额外的注释等等,函数命名规则只是规定了编程语言的函数的统一样式,这个可能需要一定的积累~
    26 replies  •  2014-10-22 14:06:52 +08:00
    fangzhzh
    fangzhzh
    Oct 21, 2014 via Android❤️1
    1
    学好英语
    angelface
    angelface
    Oct 21, 2014❤️1
    2
    jsonline
    jsonline
    Oct 21, 2014 via Android❤️1
    3
    备好字典
    drush
    drush
    Oct 21, 2014❤️3
    4
    就算英语好,遇到 object_get() 跟 get_object() 这两种风格都够你纠结一番。
    zooeys
    zooeys
    Oct 21, 2014
    5
    不是有规范么? 按照规范来~~~
    chmlai
    chmlai
    Oct 21, 2014
    6
    Naming is hard; 老外都这么说.
    sojingle
    sojingle
    Oct 21, 2014
    7
    不去试图取个短名字的话,就会容易很多
    kmvan
    kmvan
    Oct 21, 2014 via Android
    8
    @drush 就算英语好,遇到 object_get() 跟 get_object() 这两种风格都够你纠结一番。

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

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

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

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

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

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

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

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