想问下大家工作中有没有私有成员变量前缀加 m 的习惯 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GuLuDaDuiZhang
V2EX    Android

想问下大家工作中有没有私有成员变量前缀加 m 的习惯

  •  1
     
  •   GuLuDaDuiZhang 2018-01-08 11:00:53 +08:00 16739 次点击
    这是一个创建于 2915 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在谷歌 checks 规则里是不建变量用匈牙利命名法,但我看的 android 源码里私有变量几乎都是前缀加 m。

    前缀加 m 代码提示感觉稍顺一点,不过我初出茅庐用不用感觉也差不多。目前我的代码都是前缀加 m 表面类型,现在琢磨着要不要改过来,于是想了解一下有这种习惯的开发者多不多。
    29 条回复    2018-01-09 12:48:39 +08:00
    neoblackcap
        1
    neoblackcap  
       2018-01-08 11:05:53 +08:00
    IDE 本身可以提示私有不私有,我是不加的
    Icezers
        2
    Icezers  
       2018-01-08 11:11:10 +08:00
    成员变量前面加_ ,局部变量前面加 m,

    有和我一样的吗?



    然后写起兴来了就什么都不管了
    hsuan
        3
    hsuan  
       2018-01-08 11:17:52 +08:00   1
    加 m 是 AOSP 的规定: https://source.android.com/setup/code-style#follow-field-naming-conventions
    如果你不是向 AOSP 提交代码的话,完全可以不加。
    而且,这种做法几乎遭到多数人的反对, 更何况,google 自己的 java style guide 里都并不赞同这种做法。
    所以我的建议是: 不加
    quickma
        4
    quickma  
       2018-01-08 11:25:06 +08:00
    没有
    pinocc
        5
    pinocc  
       2018-01-08 11:26:05 +08:00
    没有, 嫌烦
    GuLuDaDuiZhang
        6
    GuLuDaDuiZhang  
    OP
       2018-01-08 11:26:35 +08:00
    @hsuan 原来如此。这规定算是历史遗留问题吧。
    GuLuDaDuiZhang
        7
    GuLuDaDuiZhang  
    OP
       2018-01-08 11:28:55 +08:00
    @Icezers 团队开发还是要遵循一套标准的好,不然每个人风格迥异互看代码时那酸爽。
    Icezers
        8
    Icezers  
       2018-01-08 11:29:39 +08:00
    @GuLuDaDuiZhang 没事 我定标准就行了 → →
    oxoxoxox
        9
    oxoxoxox  
       2018-01-08 11:29:54 +08:00
    我们公司规定 C++的成员变量前面都要加上 m 不论是否是 private 虽然我们都不是写 android 代码的
    我们公司大部分人都是使用 SublimeText 没有提示功能 命名上做好区分后更方便看代码
    各种 style guide 也都是为了使代码更整洁 让大家更容易查看和分析 这个没有唯一的标准
    GuLuDaDuiZhang
        10
    GuLuDaDuiZhang  
    OP
       2018-01-08 11:30:55 +08:00
    @Icezers 大佬,跪拜
    zhaohui318
        11
    zhaohui318  
       2018-01-08 11:34:35 +08:00 via Android   2
    Icezers
        12
    Icezers  
       2018-01-08 11:35:45 +08:00   1
    @GuLuDaDuiZhang 我的想法是成员变量加了_防止 IDE 代码提示的时候提示错,新人喜欢全部写成成员变量甚至静态变量,这样可以增加调用成本,防止出错。函数局部变量加 m,区分类名和变量名
    Icezers
        13
    Icezers  
       2018-01-08 11:36:15 +08:00
    @GuLuDaDuiZhang 只是我自己的一点想法,不一定是对的
    GuLuDaDuiZhang
        14
    GuLuDaDuiZhang  
    OP
       2018-01-08 11:49:49 +08:00
    @oxoxoxox 确实,我看 c/c++开发者很多都是这种命名方式。
    我真佩服你们写代码用文本编辑器,我用时没有提示写起来好难受。
    嘛,我司主业不是开发,团队很年轻还没有技术骨干来引导,基本上大家都是各写各的。但我想写一手易看的代码,就只好自己给自己定规范。
    GuLuDaDuiZhang
        15
    GuLuDaDuiZhang  
    OP
       2018-01-08 11:57:53 +08:00
    @Icezers 加_原因居然是这个。我加 m 只是学着别人,区分类名和变量名没想到。说的有道理。
    lihongjie0209
        16
    lihongjie0209  
       2018-01-08 11:59:56 +08:00
    不加. 除非你不用 IDE, 类似于文本编辑器只能用正则匹配来提示.
    nicevar
        17
    nicevar  
       2018-01-08 12:01:06 +08:00
    写 c++的时候一定会加,要不然头疼,写 java 原来会加,现在不加了,主要是不利于跟 ide 配合
    zachgenius
        18
    zachgenius  
       2018-01-08 12:01:19 +08:00
    习惯了用 m, 不加个标识符每次要多加一个 this.xxxxxx 很烦
    muziki
        19
    muziki  
       2018-01-08 12:02:31 +08:00 via iPhone
    这种方式在 clean code 里不提倡
    hyyou2010
        20
    hyyou2010  
       2018-01-08 13:28:20 +08:00
    觉得没必要
    dbdd
        21
    dbdd  
       2018-01-08 13:29:41 +08:00
    没有
    aristotll
        22
    aristotll  
       2018-01-08 13:29:48 +08:00
    这种做法基本等同说废话
    可以和 interface 前面加 I 实现命名后面加 impl 并列
    doubleflower
        23
    doubleflower  
       2018-01-08 13:35:47 +08:00
    觉得应该强制加 this. 前缀
    pdog18
        24
    pdog18  
       2018-01-08 13:58:54 +08:00
    @aristotll 前面不加 I 的后面加个 impl 是个折衷的办法吧。什么都不加那实现和接口不重名了。。

    代码整洁之道里面也推荐不加,说它是废话。
    Sypher
        25
    Sypher  
       2018-01-08 14:39:30 +08:00
    加上的话,ide 会有个波浪线,不爽,不加
    afpro
        26
    afpro  
       2018-01-09 02:53:49 +08:00
    m 开头应该是 member 的意思?我猜的。
    我加 m 是为了不和 getter 方法重名
    aminic
        27
    aminic  
       2018-01-09 03:28:06 +08:00 via Android
    加了也不错,语义更明确
    20015jjw
        28
    20015jjw  
       2018-01-09 04:15:10 +08:00 via Android
    vjnjc
        29
    vjnjc  
       2018-01-09 12:48:39 +08:00
    新项目的话大家商量一下定个规矩,
    老项目的话看上下文的代码,尽量风格一致
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2205 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 15:58 PVG 23:58 LAX 07:58 JFK 10:58
    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