c++中形参列表是什么缩写?

2018-07-09 17:04:20 +08:00
 v2byy

查看 msdn,经常看到一些形参的命名,sz, lhs, rhs,请问这些是什么的缩写?

有什么编码规范可以参考一下?

3422 次点击
所在节点    C
13 条回复
zynlp
2018-07-09 17:06:40 +08:00
left hand side
right ~~
c++ primer 好像这么写的,记不清了
tmqhliu
2018-07-09 17:11:56 +08:00
搜索“匈牙利命名法”
geelaw
2018-07-09 17:37:23 +08:00
lpsz = long pointer string (zero) 是指 指向空终结字符串的长指针

现在已经没有远近指针的区别了。
Athrob
2018-07-09 19:01:07 +08:00
两年没动 c++,一时间竟然想不起形参是何物了。
Zchary
2018-07-09 19:21:08 +08:00
命名规范可以参考'代码大全 2'
versee
2018-07-09 20:00:45 +08:00
@tmqhliu 这个和匈牙利命名法有什么关系。。
versee
2018-07-09 20:01:38 +08:00
left/right hand side
HHehr0ow
2018-07-09 22:49:43 +08:00
楼主所举例的命名一是属于一些早期 C++命名习惯的沿袭、二是属于一些惯用法。

如 sz,代表 string end with zero,类似的,还有 lpsz, psz, lpcsz 等,分别为 long pointer to string end with zero, pointer to string end with zero, long pointer to const string end with zero 等含义。其中 long pointer 的概念自 Win32 之后便已经淡化,现在 long pointer 与 pointer 在 Win32 API 中基本已无差别。早期 Win16 时代才有所区别。

如 lhs, rhs,属于惯用法 left hand side 与 right hand side 的缩写,一般代表 operator 左手侧与右手侧的变量。比如 operator+ (T lhs, T rhs),调用时形式可为 a + b,此处 a 即左手侧,b 于右手侧。

一般应用这种形式的命名法正如 2 楼 @tmqhliu 所指出,叫做匈牙利命名法。指使用几个字符做简短前缀表明变量类型,后跟随其它命名含义的方式。比如常见的 nSize, lpcszFileName, rValue 等。但是现在很多新式 coder 已经不推荐这种命名法。若重构时更改变量类型,需要额外重新命名以保证一致,给维护带来负担。

建议变量名的命名应跟随当前项目的标准,与其他 coder 保持一致。不要给后来的阅读者带来困扰,命名含义表达清晰即可。
versee
2018-07-10 00:13:51 +08:00
@tmqhliu 好吧 真的有关系 我错了
v2byy
2018-07-10 08:12:50 +08:00
@HHehr0ow 厉害了,多谢
zhuangzhuang1988
2018-07-10 10:00:01 +08:00
lhs, rhs 记得来自于 <Effective C++>
mingl0280
2018-07-10 15:00:10 +08:00
SZ = String ending with Zero
STR = STRing
L = Long
W/T = Wide
C = Const
P = Pointer
I = Interface
n/i = int32
n = int16
b = bool
c/cnt = count
ch/c = char
w = word
r = real
u = unsigned
f = float
b/by = byte
h = handle
f/fn = function
d = double
dw = double word
lhs/rhs = left-hand-side/right-hand-side
其它的在 msdn 上找通用命名约定那部分能找出来。
v2byy
2018-07-10 17:28:09 +08:00

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

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

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

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

© 2021 V2EX