首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  程序员

m_n 和 m_p 是什么意思

  •  
  •   leosirius666a · 44 天前 · 2041 次点击
    这是一个创建于 44 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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
        1
    Nasei   44 天前 via Android
    我猜,m 是 member,n 是 node , p 是 pointer
        2
    widewing   44 天前 via Android   ♥ 1
    匈牙利命名法
        3
    hhhsuan   44 天前 via Android
    p 是指针,n 应该是表示 int,m 一般是成员变量的前缀,函数参数加 m 是画蛇添足。这种是最差劲的变量命名方式,千万别学。value, left, right 就足够了。
        4
    jancing   44 天前 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 」
        5
    MCVector   44 天前 via Android
    我们的游戏引擎就是用的这个命名法。但是对于 Struct 都是 public member 应该不用加 m_
        6
    uxstone   44 天前
    之前看 nodejs 的业务代码, 里面有很多变量命名成 cb , 一时理解不了,后来某天顿悟,原来是 callback 的缩写,淦
        7
    iwtbauh   43 天前 via Android
    又是匈牙利命名法。引用一句老话“这就是脑子有坑,编译器知道变量类型,不用你再写一遍”
        8
    xor   43 天前 via iPhone
    @iwtbauh 有些环境不太容易直观地看到变量类型,加到命名里是有利于理解代码的
        9
    jhdxr   43 天前   ♥ 1
    @iwtbauh 代码是写过人看的,不是编译器看的。除非你的脑子和编译器一样好使,读代码的时候能自动做完所有类型推断+一直记住
        10
    iwtbauh   43 天前 via Android   ♥ 2
    @jhdxr #9 所以要鼓励写小函数。鼓励把代码拆开。你在一个小函数里写一个叫 tmp 的变量也能一下子看明白,反之如果函数很长.....emmm

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

    但是,我觉得如果每一次打变量名时还得先输一下类型就非常糟心:
    nValue
    lpString
    dwNumber
    fData
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3602 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 34ms · UTC 05:23 · PVG 13:23 · LAX 21:23 · JFK 00:23
    ♥ Do have faith in what you're doing.