V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
leosirius666a
V2EX  ›  程序员

m_n 和 m_p 是什么意思

  •  
  •   leosirius666a · 2019-10-05 23:49:56 +08:00 · 4185 次点击
    这是一个创建于 1911 天前的主题,其中的信息可能已经有所发展或是发生改变。

    struct BinaryTreeNode { int m_nValue; BinaryTreeNode *m_pLeft; BinaryTreeNode *m_pRight; }

    如上,剑指 offer 数据结构的定义里 m_n 和 m_p 是什么意思呢?

    10 条回复    2019-10-06 18:01:58 +08:00
    Nasei
        1
    Nasei  
       2019-10-05 23:52:17 +08:00 via Android
    我猜,m 是 member,n 是 node , p 是 pointer
    widewing
        2
    widewing  
       2019-10-05 23:54:16 +08:00 via Android   ❤️ 1
    匈牙利命名法
    hhhsuan
        3
    hhhsuan  
       2019-10-05 23:56:29 +08:00 via Android
    p 是指针,n 应该是表示 int,m 一般是成员变量的前缀,函数参数加 m 是画蛇添足。这种是最差劲的变量命名方式,千万别学。value, left, right 就足够了。
    jancing
        4
    jancing  
       2019-10-06 00:08:48 +08:00 via Android   ❤️ 3
    g: Use with global variables—g_Counter
    m: Use with member variables—m_Counter
    p: Use with pointer variables—m_pActor
    V: Use with virtual functions—VDraw()
    I: Use with Interface classes—class IDrawable
    ---摘自「 Game Coding Complete 」
    MCVector
        5
    MCVector  
       2019-10-06 00:16:53 +08:00 via Android
    我们的游戏引擎就是用的这个命名法。但是对于 Struct 都是 public member 应该不用加 m_
    uxstone
        6
    uxstone  
       2019-10-06 08:30:46 +08:00
    之前看 nodejs 的业务代码, 里面有很多变量命名成 cb , 一时理解不了,后来某天顿悟,原来是 callback 的缩写,淦
    iwtbauh
        7
    iwtbauh  
       2019-10-06 14:08:15 +08:00 via Android
    又是匈牙利命名法。引用一句老话“这就是脑子有坑,编译器知道变量类型,不用你再写一遍”
    xor
        8
    xor  
       2019-10-06 14:24:44 +08:00 via iPhone
    @iwtbauh 有些环境不太容易直观地看到变量类型,加到命名里是有利于理解代码的
    jhdxr
        9
    jhdxr  
       2019-10-06 15:58:50 +08:00   ❤️ 1
    @iwtbauh 代码是写过人看的,不是编译器看的。除非你的脑子和编译器一样好使,读代码的时候能自动做完所有类型推断+一直记住
    iwtbauh
        10
    iwtbauh  
       2019-10-06 18:01:58 +08:00 via Android   ❤️ 2
    @jhdxr #9 所以要鼓励写小函数。鼓励把代码拆开。你在一个小函数里写一个叫 tmp 的变量也能一下子看明白,反之如果函数很长.....emmm

    即使如此,比如一般读代码时看到变量名很少需要纠结它是 int 还是 long 吧。比如你写一个 offset 变量名基本上没有人认为是一个浮点数。如果想让代码易懂,不如取个清晰的变量名名,而不是重写一遍变量的类型。

    但是,我觉得如果每一次打变量名时还得先输一下类型就非常糟心:
    nValue
    lpString
    dwNumber
    fData
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   927 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:16 · PVG 05:16 · LAX 13:16 · JFK 16:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.