搜索
bottom↓
回复: 66

“高手”写代码时也会遇到命名的烦恼

  [复制链接]

出0入0汤圆

发表于 2016-2-23 08:53:10 | 显示全部楼层 |阅读模式
我写代码的经验也算很丰富了。
有时给控件命名也会遇到烦恼,
举个最近的例子:
   界面上需要放一个文本框,让用户输入一个参数,这个参数表示为:每换一种溶液的时候,机器臂要上升的高度。

想了很久,最终用了这样的名字: TextBoxHeightChangeForChangeLiquid

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2016-2-23 08:58:40 来自手机 | 显示全部楼层
把两个change 去掉?

出5入14汤圆

发表于 2016-2-23 09:03:36 | 显示全部楼层
专业的软件大牛啊!

象我这种半路出道的,最怕的就是长名字,函数名还好点,变量名超过8个字符我就浑身难受了 ......

出0入0汤圆

发表于 2016-2-23 09:10:39 | 显示全部楼层
用自动补全功能还行,多长名字都不怕

出0入0汤圆

 楼主| 发表于 2016-2-23 09:10:39 | 显示全部楼层
EMC菜鸟 发表于 2016-2-23 09:03
专业的软件大牛啊!

象我这种半路出道的,最怕的就是长名字,函数名还好点,变量名超过8个字符我就浑身难 ...

如果是单片机编程,我也不会用那么长的名字,因为单片机变量一般不会很多。
C#编程,可以用长点的名字,这样一看名字,就知道这个变量是干什么的了。

出0入0汤圆

发表于 2016-2-23 09:28:12 | 显示全部楼层
TheRisingHeightWhenChangingSolution
想不出变量名就用短语,再不行就用句子!

出0入0汤圆

发表于 2016-2-23 09:30:24 | 显示全部楼层
ChangeForChangeLiquid->RaiseForLiquidChanged

出0入0汤圆

 楼主| 发表于 2016-2-23 09:31:59 | 显示全部楼层
apple_eat 发表于 2016-2-23 09:30
ChangeForChangeLiquid->RaiseForLiquidChanged

谢谢。真的高手来了。。。

出0入4汤圆

发表于 2016-2-23 09:35:08 | 显示全部楼层
codefish 发表于 2016-2-23 09:10
如果是单片机编程,我也不会用那么长的名字,因为单片机变量一般不会很多。
C#编程,可以用长点的名字, ...

为啥都抛弃带 _ 下划线的命名方式了?

出0入54汤圆

发表于 2016-2-23 09:35:10 | 显示全部楼层
在定义变量的地方再加上注释就OK了,没必要搞这么长吧。

出0入4汤圆

发表于 2016-2-23 09:48:10 | 显示全部楼层
UserHeightForLiquid

出0入0汤圆

发表于 2016-2-23 09:50:18 | 显示全部楼层
C51 时一看到长名字的变量就头晕。。。。。

出0入0汤圆

发表于 2016-2-23 09:53:30 | 显示全部楼层
suebillt 发表于 2016-2-23 09:35
为啥都抛弃带 _ 下划线的命名方式了?

我是感觉如果用下划线的命名  很多自动补全弹不出来   比如vax 用下划线的东西比较难找到

出0入0汤圆

发表于 2016-2-23 09:57:31 | 显示全部楼层
楼主,在各模块变量间加下划线区分开

出0入46汤圆

发表于 2016-2-23 10:16:43 | 显示全部楼层
tbRaiseHeight4LiquidChg

出0入0汤圆

发表于 2016-2-23 10:17:21 | 显示全部楼层
lusson 发表于 2016-2-23 09:35
在定义变量的地方再加上注释就OK了,没必要搞这么长吧。


注释只是辅助作用

变量最好是自解义的…… 看到变量名,就知道这个变量是做什么的

出0入54汤圆

发表于 2016-2-23 10:18:28 | 显示全部楼层
祥子 发表于 2016-2-23 10:17
注释只是辅助作用

变量最好是自解义的…… 看到变量名,就知道这个变量是做什么的  ...

如果定义这么长一个变量名才能搞清楚意思的话, 不如注释加合适的缩写。

出0入0汤圆

发表于 2016-2-23 10:24:53 | 显示全部楼层
lusson 发表于 2016-2-23 10:18
如果定义这么长一个变量名才能搞清楚意思的话, 不如注释加合适的缩写。 ...



能通过合适的缩写,又能一眼看明白当然最好了。


注释还是辅助的,定义或声明时可以增加注释

你不可能在每次引用这个变量的时候,都在旁边注释上这个变量是做什么用的;

出0入0汤圆

 楼主| 发表于 2016-2-23 10:33:10 | 显示全部楼层
祥子 发表于 2016-2-23 10:24
能通过合适的缩写,又能一眼看明白当然最好了。

说得很好。。。

出0入86汤圆

发表于 2016-2-23 10:43:46 | 显示全部楼层
还是喜欢用下划线,不喜欢驼峰式的大小写,看着很不舒服。。。

出0入0汤圆

发表于 2016-2-23 11:07:20 | 显示全部楼层
控件名建议缩写。Textbox 我一般就TB_了

出0入0汤圆

 楼主| 发表于 2016-2-23 11:09:03 | 显示全部楼层
jacky_yhy 发表于 2016-2-23 11:07
控件名建议缩写。Textbox 我一般就TB_了

在C#中,自动生成的是TextBox1、TextBox2....., 我习惯保留前面,改动后面。

出50入255汤圆

发表于 2016-2-23 11:13:32 | 显示全部楼层
其实很简单,虽然一眼看着长命名比较烦,
但总可以再看一眼就明白,甚至英语不懂,可以翻译。最多也就几秒钟的事情。
如果给您弄个缩写,或者乱写,那您要想明白就不只几秒了,可能是几分钟甚至根本就搞不明白了。

出0入0汤圆

发表于 2016-2-23 11:14:21 | 显示全部楼层
本帖最后由 smithding 于 2016-2-23 11:15 编辑

一看不是高手啊,高手命名个a或b之类就可以了,3~5天项目做完调试OK今后就没有关联了,要么是码农要么是学生才会这么干

出0入0汤圆

发表于 2016-2-23 11:14:33 | 显示全部楼层
codefish 发表于 2016-2-23 11:09
在C#中,自动生成的是TextBox1、TextBox2....., 我习惯保留前面,改动后面。

变量名称不一样的地方,最好放在前面。
编译器容易识别,不需要判断很多字符。

出0入0汤圆

发表于 2016-2-23 11:41:48 来自手机 | 显示全部楼层
我一般用结构体封装。这样就不会太长,也清楚。

出0入0汤圆

发表于 2016-2-23 11:54:40 | 显示全部楼层
codefish 发表于 2016-2-23 11:09
在C#中,自动生成的是TextBox1、TextBox2....., 我习惯保留前面,改动后面。

为了好看,为了变量名短,还想要偷懒,世界上没这样的好事吧

出0入0汤圆

发表于 2016-2-23 11:55:18 | 显示全部楼层
宁愿变量名长一点,连猜带蒙至少能理解个大概。最怕维护代码时,某些人取名一堆缩写,然后又没有注释的,猜都没法猜,还要通过程序流程去猜这个变量到底是表示什么意思,真是要命了。

出0入0汤圆

发表于 2016-2-23 12:17:14 来自手机 | 显示全部楼层
见别人写的代码button1 button2 button✘✘✘

出0入0汤圆

发表于 2016-2-23 12:32:36 | 显示全部楼层
本帖最后由 ywhbn 于 2016-2-23 12:34 编辑

代码大全2里说,变量名最好控制在15个字符内,不要超过21个字符。TextRobotArmHeight,代码有上下文,变量名不用写成句子。

出0入0汤圆

发表于 2016-2-23 12:33:52 | 显示全部楼层
编译器如果支持中文的话直接写中文

出0入0汤圆

发表于 2016-2-23 14:22:10 | 显示全部楼层
mTextBoxIncrementForReplaceLiquid

出0入0汤圆

发表于 2016-2-23 17:05:33 | 显示全部楼层
中文表达就有歧义,更不要说英语了,还“高手”呢。。“换一种”,是“更换”还是“切换到下一种”的意思?是“溶液”(Solution)还是“液体”(Liquid)?“需要移动的高度”,叫“高度移动量”或者“高度增量”不是更好?
TextBoxHeightIncrementForLiquid(Solution)Replacement,
TextBoxHeightIncrementForLiquid(Solution)Switching,看看哪个是你想要的吧。

出0入0汤圆

发表于 2016-2-23 17:11:39 来自手机 | 显示全部楼层
agilityChen 发表于 2016-2-23 17:05
中文表达就有歧义,更不要说英语了,还“高手”呢。。“换一种”,是“更换”还是“切换到下一种”的意思? ...

居然有括弧???!

出0入0汤圆

发表于 2016-2-23 17:13:18 | 显示全部楼层
huanrongyehoubishangshenggaodu

出0入0汤圆

发表于 2016-2-23 17:33:35 | 显示全部楼层
zhd1021 发表于 2016-2-23 17:13
huanrongyehoubishangshenggaodu

这个名字我喜欢

出0入0汤圆

发表于 2016-2-23 18:10:20 来自手机 | 显示全部楼层
skyseeingliqy 发表于 2016-2-23 17:11
居然有括弧???!

结合上下文看根本不会有歧义: Liquid/Solution二个词选其一。
智商堪忧。

出0入0汤圆

发表于 2016-2-23 18:52:19 | 显示全部楼层
TBHForLiquid

出0入84汤圆

发表于 2016-2-23 19:03:52 | 显示全部楼层
代码中  “到” 也就是 “to” 一般用 “2”        ”for“用 “4”    版本升级直接 1 2 3 4 5 6...         单词缩写就行了。

就像V4L2等等。。    声明处再加上注释, 一般都OK。

出0入0汤圆

发表于 2016-2-23 19:14:10 | 显示全部楼层
HeiDeltaOnLiquidChange

或者这个,tbHD换溶液机器臂上升高度,简单愉快。不过如果要给老外看估计就瞎了

出0入0汤圆

发表于 2016-2-23 19:58:25 | 显示全部楼层
Height4EachLiquid?

出0入22汤圆

发表于 2016-2-23 20:02:11 | 显示全部楼层
两个change感觉很怪异。 texboxRise_changeliquid

出0入0汤圆

发表于 2016-2-23 20:18:13 | 显示全部楼层
说句不中听的话,既然你没能用中文简单明了地描述你遇到的问题,你的变量命名水平也就可想而知之了

出0入0汤圆

发表于 2016-2-23 20:39:33 | 显示全部楼层
本帖最后由 独孤帅 于 2016-2-23 20:42 编辑

可以做几层封装,稍微清晰一点。
TextBoxGroup.WhenLiquidChange.tbHeightStep
第一层,把所有TextBox对象的引用封装在一起,这样名字就不用写TextBox了。
第二层,在溶液改变的时候,需要的几个参数,每个参数对应一个TextBox。
第三层,由于有了前面的TextBox,可以简写为小写的tb了。
这样虽然整体名字变长了,但是更有调理,如果LZ的编程语言支持面向对象,这样比下划线要好。

顺便说一句:很多面向对象语言里有名称空间这个概念,利用起来也是可以的。
比如C++:TextBoxGroup::WhenLiquidChange::tbHeightStep

出0入0汤圆

发表于 2016-2-23 22:56:33 来自手机 | 显示全部楼层
codefish 发表于 2016-2-23 09:10
如果是单片机编程,我也不会用那么长的名字,因为单片机变量一般不会很多。
C#编程,可以用长点的名字, ...

单片机变量不会多。。。。。。sure?

出0入0汤圆

 楼主| 发表于 2016-2-23 23:15:43 | 显示全部楼层
zt2012 发表于 2016-2-23 22:56
单片机变量不会多。。。。。。sure?

呵呵。我目前手上的单片机项目的变量数量不多。

出0入0汤圆

发表于 2016-2-24 00:05:02 | 显示全部楼层
Bunny_Girl 发表于 2016-2-23 10:43
还是喜欢用下划线,不喜欢驼峰式的大小写,看着很不舒服。。。

我是最讨厌下划线了, 程序复杂一点, 就满大街的单词, 却分不清下划线和标点符号

出0入0汤圆

发表于 2016-2-24 00:08:07 | 显示全部楼层
maninblack 发表于 2016-2-23 11:55
宁愿变量名长一点,连猜带蒙至少能理解个大概。最怕维护代码时,某些人取名一堆缩写,然后又没有注释的,猜 ...

赞成, 缩写最要命

出0入0汤圆

发表于 2016-2-24 08:51:52 | 显示全部楼层
缩写得要很容易看的明白的缩写。
比如常用的控件的缩写,看程序范例里就有。

出0入0汤圆

发表于 2016-2-24 09:07:34 | 显示全部楼层
说实在 真的太长了,你可以用结构打包一下 这样也是很容易读的。 最多一个名字 就你那个2/3长度,太长就注释 缩写

出0入0汤圆

发表于 2016-2-24 09:09:35 来自手机 | 显示全部楼层
txtHLrate字数补丁

出0入0汤圆

发表于 2016-2-24 09:27:09 | 显示全部楼层
可以尝试用结构体来定义变量。

出0入0汤圆

发表于 2016-2-24 23:18:46 | 显示全部楼层
我是来看大家的Chinglish的
都是业余英文翻译
建议找些专业英语的人才来,坐等高手

出0入0汤圆

发表于 2016-2-24 23:41:52 | 显示全部楼层
还在使用拼音的悄悄看你们讨论

出100入101汤圆

发表于 2016-2-25 09:52:18 | 显示全部楼层
下划线可能更易读

出0入0汤圆

发表于 2016-2-25 09:57:36 | 显示全部楼层
TextBox_Height_Of_UserLiquidChanged
Height_Of_UserLiquidChanged_TextBox
我更喜欢第二个方式

出0入0汤圆

发表于 2016-2-25 17:40:09 | 显示全部楼层
linux风格的下划线好像只在纯C的代码中才看得到

出0入0汤圆

发表于 2016-2-25 18:54:47 | 显示全部楼层
tb_HeightOfLiquid

出0入0汤圆

发表于 2016-2-25 21:04:18 | 显示全部楼层
本帖最后由 chxaitz 于 2016-2-25 21:07 编辑



<类缩写>_<属性>[Of][名称]
tb_HeightChgOfLiquid

出0入0汤圆

发表于 2016-2-25 21:44:14 来自手机 | 显示全部楼层
我用拼音

出110入26汤圆

发表于 2016-2-26 07:55:38 来自手机 | 显示全部楼层
直接中文变量名得了

出0入0汤圆

发表于 2016-2-26 11:08:29 | 显示全部楼层
ArmAdaptor_ForLiquidLevel

出0入0汤圆

发表于 2016-2-26 11:19:53 | 显示全部楼层
其实工作久了后,每个人慢慢都会有自己的编程风格。

出0入0汤圆

发表于 2016-2-26 11:48:46 | 显示全部楼层
以前用缩写,现在用英文全名

出0入0汤圆

发表于 2016-2-28 17:59:58 | 显示全部楼层
太麻烦了 看个人方便吧

出0入42汤圆

发表于 2016-2-28 18:53:39 | 显示全部楼层
http://unbug.github.io/codelf/

这里看看别人怎么起名字
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 19:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表