m_n 和 m_p 是什么意思

2019-10-05 23:49:56 +08:00
 leosirius666a

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

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

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

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

但是,我觉得如果每一次打变量名时还得先输一下类型就非常糟心:
nValue
lpString
dwNumber
fData

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/606504

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX