• 请不要在回答技术问题时复制粘贴 AI 生成的内容
iorilu
V2EX  ›  程序员

记得有文章说, 取名字是最难的事之一, 大家有什么经验分享吗

  •  
  •   iorilu · Sep 10, 2023 · 7875 views
    This topic created in 1149 days ago, the information mentioned may be changed or developed.

    有时候写一个函数

    函数逻辑都想好了

    但名字还没想出来

    手放在键盘上, 无从下手, 有点急躁

    毕竟知道, 名字也不能瞎凑合, 虽然现在 ide 改名字也不是什么难事

    难经常还是要为想名字耽误下

    我现在简单遵循几个原则

    1. 风格统一, 都用英文(或拼音也行, 但不能混用)
    2. 常用得名字, 都用约定俗称得, 不折腾(比如 username , 有可能有人用 user_name , 但自己应该所有项目统一)
    3. 不追求完美名字, 毕竟英文词汇有限, 用几个单词也行, 但不超过 3 个单词
    4. 统一用单数名词, 要不然有时候到底加 s 还是什么其他得变形又得想

    暂时先想到这么多, 大家可以讨论补充下

    57 replies  •  2023-09-11 18:23:57 +08:00
    1map
    1map
    Sep 10, 2023
    1
    用 chatgpt 试试
    xiaoz
    xiaoz
    Sep 10, 2023 via Android❤️1
    2
    为此,我用 AI 写了一个工具,每次我告诉他中文,自动给我 3 个变量作为参考。见 https://asbot.imgurl.ink/userole/17
    archxm
    archxm
    Sep 10, 2023
    4
    主要是要避讳,不要和长辈已有的字重合。
    其他都好说,选来选去的
    cdwyd
    cdwyd
    Sep 10, 2023
    5
    @xiaoz 开开心心的输入了汉字,满怀期待的点了按钮,然后跳出来一个登录注册的框。。。
    aulayli
    aulayli
    Sep 10, 2023❤️4
    6
    @archxm 楼主说的是写代码时给函数起名🤣。
    MFWT
    MFWT
    Sep 10, 2023❤️1
    7
    我一般是:

    isAdmin
    isUserLogined
    getSomething
    setSomething

    总结起来是:is/get/set/have/can 等 + 驼峰命名法的对象名

    举例就是,比如我需要一个获取用户订单号的函数,我会写:getUserOrderNumber ,尽量写明白,避免日后麻烦
    chanwang
    chanwang
    Sep 10, 2023 via Android
    8
    找个算命的算一下缺什么,然后确定偏旁部首。再凑个好听一点的,满足您期望的文字。或者先给暂定字母,等娃要上学了再改。或者干脆搞个字典,让娃自己翻,翻两页凑俩字得了。
    taotaodaddy
    taotaodaddy
    Sep 10, 2023
    9
    这个难题真的已经被 chatGPT 解决了
    hsfzxjy
    hsfzxjy
    Sep 10, 2023 via Android
    10
    让我看看楼里有几个人不看正文🤣🤣🤣
    des
    des
    Sep 10, 2023❤️1
    11
    要不试试这个,看看别人都是怎么命名的 https://i18ns.com
    stephniebuewke
    stephniebuewke
    Sep 10, 2023
    12
    这是一个开源的利用古诗文起名的项目 https://github.com/holynova/gushi_namer
    anoninz
    anoninz
    Sep 10, 2023
    13
    如果是个人项目,可以试试用中文命名变量和函数名。

    对于公司项目/多人协作的项目,反正我所在的公司现在对于枚举值已经可以接受中文命名了。。。
    xiaoz
    xiaoz
    Sep 10, 2023
    14
    @cdwyd #5 ,是的,需要注册才能使用。我只是提供一个思路,其实可以自己用 AI 的 API 自己写个工具就行了。
    yaott2020
    yaott2020
    Sep 10, 2023 via Android
    15
    #4 #8 #12 不看正文🤣
    kingjpa
    kingjpa
    Sep 10, 2023
    16
    a1 a2 a3 a4 a5 isno isyes noyes nook isok ,咋拗口咋来
    chanwang
    chanwang
    Sep 10, 2023 via Android
    17
    @yaott2020 通常只看标题🌚。
    更加建议取个更好一点的标题参照新闻的标题。看完标题就知道想说什么……(死鸭子嘴硬)
    xavierchow
    xavierchow
    Sep 10, 2023❤️2
    18
    > 函数逻辑都想好了
    > 但名字还没想出来

    提供一个思路,我个人比较喜欢 top-down 的方式去写函数,而不是先去想逻辑。
    即,先试图用一句话去描述这个函数是干什么的,可以不要管怎么实现( how ),
    最好能在概括的时候思考一下函数的输入输出,只要你一句短语说的清楚的话,名字也就容易起了。

    如果先去想逻辑和具体实现的话,很容易形成一个局面,就是你最后定义函数是为了包装一堆可能
    原本不该在一个维度的逻辑代码,这时候取名字就很难了。

    换句话说,发现函数难以起名的时候,可能要思考一下是不是应该转换一下思路,做一下拆解或者合并;
    至于命名风格问题,各个语言和框架都有行业上比较成熟的惯例,加上 lint 就可以了。
    yafoo
    yafoo
    Sep 10, 2023 via Android❤️1
    19
    以为给孩子取名呢。为了给孩子取名,焦虑了半年多
    hefish
    hefish
    Sep 10, 2023
    20
    《代码大全》上有推荐,采用动宾结构, get_XXX, make_XXX, check_XXX ,load_XXX ,fuck_XXX ....
    followNew
    followNew
    Sep 10, 2023 via iPhone
    21
    以函数的结果为导向,命名一个动宾短语。
    doSomething
    kneo
    kneo
    Sep 11, 2023 via Android
    22
    取名=>命名
    vhwwls
    vhwwls
    Sep 11, 2023
    23
    @xiaoz #2 要注册 ,劝退
    veike
    veike
    Sep 11, 2023
    24
    @MFWT get set 加 query(从数据库查询)[狗头]
    AkiraZhao
    AkiraZhao
    Sep 11, 2023 via Android
    25
    正好你可以看看 Stripe 的前 CEO 是如何起 Stripe 这个名字的: https://www.quora.com/How-did-Stripe-come-up-with-its-name/answer/Greg-Brockman
    leimao
    leimao
    Sep 11, 2023 via iPhone
    26
    老外就没这烦恼,直接圣经里找
    xiamy1314
    xiamy1314
    Sep 11, 2023
    27
    各聊各的。
    xiaoz
    xiaoz
    Sep 11, 2023 via Android
    28
    @vhwwls #23 ,是的,需要注册才能使用。我只是提供一个思路,其实可以自己用 AI 的 API 自己写个工具就行了。
    yxzblue
    yxzblue
    Sep 11, 2023
    29
    取名字是最难的事,那干脆别写逻辑了。光想怎么取名吧
    Befehishaber
    Befehishaber
    Sep 11, 2023
    30
    女诗经 男楚辞
    corcre
    corcre
    Sep 11, 2023
    31
    我也碰到过, 我们乱七八糟的数据每个系统都存一份, 不说明系统的话还要翻代码看看数据从哪里过来的, 然后不加上点条件还容易重复, 最后取数的时候就有可能变成一长串(getXXXDataFromERPBySOAndPartNo)之类的...
    encro
    encro
    Sep 11, 2023
    32
    @MFWT

    isadmin 是方法 admin_id 是字段

    isUserLogined 是方法 last_login_at 是字段


    @iorilu

    如果遵循一个函数只干一件事情,那么名字就是反应这个事情的本质和需求。

    先写注释,让 copilot 帮你取名
    encro
    encro
    Sep 11, 2023
    33
    这东西,最快的方法就是学习国外同类项目优秀的源码和数据库设计。
    v23xowen
    v23xowen
    Sep 11, 2023
    34
    跨服聊天是吧
    Tengdw
    Tengdw
    Sep 11, 2023
    35
    看看有多少人是看到帖子标题点进来不看正文直接回复的
    dif
    dif
    Sep 11, 2023
    36
    随便区,有个关键字知道是干啥的都行,你敢信我都见过 name 也要缩写为 nme 。
    ruoxie
    ruoxie
    Sep 11, 2023
    37
    chatgpt 啊

    {
    "filters": [
    {
    "component": "input",
    "key": "决算单状态",
    "label": "决算单状态",
    "placeholder": "请选择"
    },
    {
    "component": "input",
    "key": "主合同编号",
    "label": "主合同编号",
    "placeholder": "请输入"
    },
    {
    "component": "input",
    "key": "客户名称",
    "label": "客户名称",
    "placeholder": "请输入"
    },
    {
    "component": "input",
    "key": "客户手机号",
    "label": "客户手机号",
    "placeholder": "请输入"
    },
    {
    "component": "input",
    "key": "工程管理",
    "label": "工程管理",
    "placeholder": "请输入"
    }
    ],
    "columns": [
    {
    "slot": false,
    "title": "决算单状态",
    "dataIndex": "决算单状态",
    "key": "决算单状态"
    },
    {
    "slot": false,
    "title": "主合同编号",
    "dataIndex": "主合同编号",
    "key": "主合同编号"
    },
    {
    "slot": false,
    "title": "客户名称",
    "dataIndex": "客户名称",
    "key": "客户名称"
    },
    {
    "slot": false,
    "title": "客户手机号",
    "dataIndex": "客户手机号",
    "key": "客户手机号"
    },
    {
    "slot": false,
    "title": "房屋地址",
    "dataIndex": "房屋地址",
    "key": "房屋地址"
    },
    {
    "slot": false,
    "title": "工程管理",
    "dataIndex": "工程管理",
    "key": "工程管理"
    }
    ],
    "pagination": {
    "show": true,
    "page": "page",
    "size": "size",
    "total": "result.total"
    },
    "includeModifyModal": false,
    "fetchName": "fetchTableList",
    "result": "[\"result\"][\"records\"]",
    "serviceName": "getTableList"
    }
    ruoxie
    ruoxie
    Sep 11, 2023
    38
    处理后

    {
    "filters": [
    {
    "component": "input",
    "key": "finalStatementStatus",
    "label": "决算单状态",
    "placeholder": "请选择"
    },
    {
    "component": "input",
    "key": "mainContractNo",
    "label": "主合同编号",
    "placeholder": "请输入"
    },
    {
    "component": "input",
    "key": "customerName",
    "label": "客户名称",
    "placeholder": "请输入"
    },
    {
    "component": "input",
    "key": "customerMobile",
    "label": "客户手机号",
    "placeholder": "请输入"
    },
    {
    "component": "input",
    "key": "projectManagement",
    "label": "工程管理",
    "placeholder": "请输入"
    }
    ],
    "columns": [
    {
    "slot": false,
    "title": "决算单状态",
    "dataIndex": "finalStatementStatus",
    "key": "finalStatementStatus"
    },
    {
    "slot": false,
    "title": "主合同编号",
    "dataIndex": "mainContractNo",
    "key": "mainContractNo"
    },
    {
    "slot": false,
    "title": "客户名称",
    "dataIndex": "customerName",
    "key": "customerName"
    },
    {
    "slot": false,
    "title": "客户手机号",
    "dataIndex": "customerMobile",
    "key": "customerMobile"
    },
    {
    "slot": false,
    "title": "房屋地址",
    "dataIndex": "houseAddress",
    "key": "houseAddress"
    },
    {
    "slot": false,
    "title": "工程管理",
    "dataIndex": "projectManagement",
    "key": "projectManagement"
    }
    ],
    "pagination": {
    "show": true,
    "page": "page",
    "size": "size",
    "total": "result.total"
    },
    "includeModifyModal": false,
    "fetchName": "fetchTableList",
    "result": "[\"result\"][\"records\"]",
    "serviceName": "getTableList"
    }
    digitv
    digitv
    Sep 11, 2023
    39
    好听,易记,好写就行了。。有些家长装 13 ,给孩子取了巨复杂的名字,又是生僻字,又是复杂笔画,百害而无一利
    imsoso
    imsoso
    Sep 11, 2023
    40
    哈哈,我就看看 v2 有多少是有娃的
    imsoso
    imsoso
    Sep 11, 2023
    41
    只看标题就回复
    weilongs
    weilongs
    Sep 11, 2023
    42
    起名字这事,按照公司规定套路避免重复、尽量说明白就好了。实在不行就 AI 给帮你吧。
    sepwolves
    sepwolves
    Sep 11, 2023
    43
    @archxm 明显你只看标题不看全文。
    itechnology
    itechnology
    Sep 11, 2023
    44
    #4 #8 #12 #30 是只看了个标题就来回复吧
    zhuisui
    zhuisui
    Sep 11, 2023❤️2
    45
    起名,不给是给变量、函数还是类、模块,这件事背后反映的,是你对这里业务的了解程度和抽象程度。这是上面回答几乎所有都没有提到的部分。
    除了有个提到用 top-down 的方式去起名,这代表的是面向领域(业务)的解决方案编程(起名),是在难以做到面向领域编程时的最优选择。

    跨越这一步之后,剩下的就是用中文来生成英文了。这里的问题是,翻译会给出一些近义词,英语不好的话,就会选到含义其实不合适的词。
    比如简单的例子,declaration 和 definition ,work 、job 、task ,time 、duration 、date 、period ,size 、count 、amount 、length 之类的

    最后才是命名风格的问题,驼峰还是下划线,无所谓,这步是最细枝末节的事情。
    jatsz
    jatsz
    Sep 11, 2023❤️2
    46
    我的经验是:以目标命令,而不是以实现命名。

    启发点是:我给公司写的一个 CI 监控和部署,我就起了 CIMonitor ,通过来监控 CI 来实现自动部署。
    后来一个同事指出其实这个 CIMonitor 真正的目的是部署,所以不如叫做 deployer 。

    从这个点,让我意识到,名字要传达目的,而不是实现(做法)。
    zackzergzeng
    zackzergzeng
    Sep 11, 2023
    47
    github copilot 会补全名字的,有会员可以试下
    aababc
    aababc
    Sep 11, 2023
    49
    @jatsz 确实,很多人会把实现的细节体现在名字上
    jatsz
    jatsz
    Sep 11, 2023
    50
    在补充一下,以目标命名的好处。
    - 传达目的,这个通常是稳定的抽象,避免 X-Y 问题。
    - 给自己的实现带来灵活性,修改实现的时候不必修改名字。
    des
    des
    Sep 11, 2023 via iPhone
    51
    @corcre 说到这个就不得不提一下苹果的接口了,名字都是巨长无比
    MFWT
    MFWT
    Sep 11, 2023
    52
    @veike 道理是相通的,你得看得出来这玩意在干啥,不然取名字没意义,写 aaabbb 就好
    MoYi123
    MoYi123
    Sep 11, 2023
    53
    说明你的函数逻辑不清楚 ,需要用很长一段话才能说清楚在干什么, 建议重写.
    alleluya
    alleluya
    Sep 11, 2023
    54
    @aulayli 我没点进来以前也以为是给人起名字...🤣
    pq2Q3XZidsTF906J
    pq2Q3XZidsTF906J
    Sep 11, 2023 via Android
    55
    有一本书叫[代码大全]大部分程序员常见问题都有说明,推荐看看,很有用
    Qiss
    Qiss
    Sep 11, 2023
    56
    确实,我家要不是祖先托梦,我想不出起啥名字
    allanpk716
    allanpk716
    Sep 11, 2023 via iPhone
    57
    计算生辰八字五行属性的算法,非原创,只是用 C 艹 实现。我不迷信,但是给娃取名的时候我也用来玩了。https://github.com/allanpk716/BaziEval
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1405 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 91ms · UTC 22:00 · PVG 06:00 · LAX 14:00 · JFK 17:00
    ♥ Do have faith in what you're doing.