重名方法怎么命名? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LudwigWS
V2EX    Java

重名方法怎么命名?

  •  
  •   LudwigWS 2020 年 3 月 20 日 4029 次点击
    这是一个创建于 2131 天前的主题,其中的信息可能已经有所发展或是发生改变。
    只是举个例子:

    1.有一个旧的 getUsers(...) 方法;
    2. 如果参数表是一样的

    我不想删了这个旧的方法。

    如何命名呢?我在想加一个日期后缀(getUsers_0320 )会不会给人打。
    29 条回复    2020-03-21 17:28:20 +08:00
    U7Q5tLAex2FI0o0g
        1
    U7Q5tLAex2FI0o0g  
       2020 年 3 月 20 日
    注释掉旧的方法
    gongzhang
        2
    gongzhang  
       2020 年 3 月 20 日 via iPhone   12
    getUsérs(...)
    ipwx
        3
    ipwx  
       2020 年 3 月 20 日
    如果参数表一样,返回类型一样嘛?如果返回类型也一样,你提供两个方法干嘛?

    如果返回类型不一样,改名字啊。我就不行你两个类型名字都一样,用新的返回类型名构造方法名称不就行了。
    ayase252
        4
    ayase252  
       2020 年 3 月 20 日 via iPhone
    为什么会同样命名,同名在我的思维里就是两个函数做了完全相同的工作
    littlewing
        5
    littlewing  
       2020 年 3 月 20 日
    getUsersV2
    also24
        6
    also24  
       2020 年 3 月 20 日
    按道理来说,这是代码版本管理需要处理的事情,你只需要在 commit message 里写清楚对旧方法做了什么处理。

    实际中,如果很希望留下旧方法的尸体,建议直接注释掉,而不是简单的改名。
    这样可以明确的传达出本方法已经『废弃』,避免再生枝节。

    当然你也可以使用 @Deprecated 注解进行标注,但是…… 不是每个人都会去看 warn
    also24
        7
    also24  
       2020 年 3 月 20 日
    似乎不小心 @ 到了人…… 非常抱歉……
        8
    catinsides  
       2020 年 3 月 20 日
    plus pro ...
    Mutoo
        9
    Mutoo  
       2020 年 3 月 20 日   1
    新的方法还叫 getUsers()
    旧的方法移到 deprecated namespace 里去。
    fihserman123
        10
    fihserman123  
       2020 年 3 月 20 日
    要不你试试适配器模式
    xujinkai
        11
    xujinkai  
       2020 年 3 月 20 日
    deprecated +1
    noobsheldon
        12
    noobsheldon  
       2020 年 3 月 20 日
    获取用户()
    learningman
        13
    learningman  
       2020 年 3 月 20 日 via Android
    加一个默认参数,不调用这个参数的时候执行旧方法,调用这个参数的时候执行新方法。
    noobsheldon
        14
    noobsheldon  
       2020 年 3 月 20 日   2
    西班牙风情: obtenerUsuarios(), 法兰西味道:
    ObtenirDesUtilisateurs, 伏特加:
    получить пользователей() /doge
    Nimrod
        15
    Nimrod  
       2020 年 3 月 20 日 via Android
    getUserV2?
    az467
        16
    az467  
       2020 年 3 月 20 日 via Android   1
    getUsersGracefully()
    ragnaroks
        17
    ragnaroks  
       2020 年 3 月 20 日
    就方法 private,新同名方法进行判断,如果参数符合老方法的使用条件,就 return 老方法,否则使用新方法
    Bronya
        18
    Bronya  
       2020 年 3 月 20 日 via Android
    Ex, Plus, Pro, One, Odyssey, ...
    sicauxeon
        19
    sicauxeon  
       2020 年 3 月 20 日   1
    方法名和参数表都一样的情况下,而且不打算重构。那么可以方法名加个 V2 后缀,当然这绝对不是最优的解决办法,但是比添加时间后缀要好。

    更加强烈的建议是,为你新的方法取一个更加有意义且自解释的名字。
    LudwigWS
        20
    LudwigWS  
    OP
       2020 年 3 月 20 日
    @noobsheldon
    @Bronya
    哈哈,可以的你们
    forgottencoast
        21
    forgottencoast  
       2020 年 3 月 20 日
    getUser2
    yousabuk
        22
    yousabuk  
       2020 年 3 月 20 日
    getUser2
    td width="auto" valign="top" align="left">
        23
    lonewolfakela  
       2020 年 3 月 20 日
    其实可以按微软风在新函数名字后面加个 Ex……
    lonewolfakela
    ericgui
        24
    ericgui  
       2020 年 3 月 21 日
    getUsers2()
    xingheng
        25
    xingheng  
       2020 年 3 月 21 日
    #21 #22 如果我看到加 2 这种做法一定往死里打
    #23 加 Ex 一般是定义两个相同功能但参数列表不同的成对方法


    如果是功能和之前的 getUsers 基本相同,参数列表也相同,建议不要写一个新方法出来,直接在原来的实现上改写。
    如果功能不相同,建议不要加任何“通用型”等无意义的后缀,直接 getXXXUsers 之类的,以示区分。
    longjiahui
        26
    longjiahui  
       2020 年 3 月 21 日
    coderEOS
        27
    coderEOS  
       2020 年 3 月 21 日 via Android
    脚本语言的话可以 getXXX = getUsers,引用 function
    chen1164162915
        28
    chen1164162915  
       2020 年 3 月 21 日
    getUsersV1
    getUsersV2
    getUsersV3
    retanoj
        29
    retanoj  
       2020 年 3 月 21 日 via iPhone
    我见过好多 v2 的。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5438 人在线         Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 07:34 PVG 15:34 LAX 23:34 JFK 02:34
    Do have faith in what you're doing.
    ubao msn 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