写好代码的七条好习惯
发布日期:2021-06-29 19:10:18
浏览次数:4
分类:技术文章
本文共 2672 字,大约阅读时间需要 8 分钟。
写好代码的七条好习惯
1.命名明确
尽量做到见名知意。
- 能用简洁英文表示尽量用英文
// 用户名string userName = "Czhenya";
- 拼音也要尽量简单的全拼表示
string yongHuMing = "Czhenya";
- 尽量不用这种缩写
string yhm = "Czhenya";
- 尽量不用这种无意义命名
string n = "Czhenya";
2.命名风格
尽量使变量/函数命名风格一致。
建议写法:
- 驼峰命名法
// 用户名,用户IDstring userName = "Czhenya";string userId = "123456";
- 下划线分隔
string user_name = "Czhenya";string user_id = "123456";
不建议的写法:
- 全堆在一起
string username = "Czhenya";string userid = "123456";
- 多种模式混合使用
string userName = "Czhenya";string user_id = "123456";
- 拼音和英文混合使用
string yongHuName = "Czhenya";string yingHuId = "123456";
3.写注释
建议养成写注释的习惯,一是自己看为了以后维护的时候方便回忆,二是给其他人看为了同事间互相合作。
- 要养成写注释的习惯,不要觉得写注释是浪费时间;
- 精简注释内容,不要写过长的无关紧要的话;
- 写的注释请和代码实际意图保持一致(修改代码时一定要维护注释);
看一个反面示例,代码如下:
Vector3 getV3(){ if (isHeng) return Vector3.right * (Random.Range(0, 2) == 0 ? -1 : 1) * Random.value * 120 + Vector3.up * (Random.Range(0, 2) == 0 ? -1 : 1) * Random.value * 80; float x = Random.value * 140; float y = (float)System.Math.Sqrt((1 - (x * x / 19600)) * 7056); float xy = Random.value; return Vector3.right * (Random.Range(0, 2) == 0 ? -1 : 1) * x * xy + Vector3.up * (Random.Range(0, 2) == 0 ? -1 : 1) * y * xy;}
怎么样有没有想打人的冲动…这写的什么啊,我估计过不了一周,自己回头来看都不愿意看,更别说维护了。
4.尽可能把代码格式化
- 好的缩进格式是写好代码的基础
随便写一个函数,它的格式不正规甚至是错误的,即使它再简单,也不愿意多看一眼,有没有这种感觉?
一个反向示例:
void Test(){ int x = 1; int y; if (Random.Range(0, 2) == 0) x = -1; y = -1; int z = 3;}
- 尽量不要把长代码写在一行
来对比下面这两段代码,你更愿意看哪个?
return Vector3.right * (Random.Range(0, 2) == 0 ? -1 : 1) * Random.value * 120 + Vector3.up * (Random.Range(0, 2) == 0 ? -1 : 1) * Random.value * 80;
float x = (Random.Range(0, 2) == 0 ? -1 : 1) * Random.value * 120;float y = (Random.Range(0, 2) == 0 ? -1 : 1) * Random.value * 80;return Vector3.right * x + Vector3.up * y;
5.触发异常要处理
之前看博客时看过类似下面这样的代码,做了异常捕获,然后就没有然后了…
try { int intValue = Convert.ToInt32(defauleRule);} catch (Exception e) { }
难道添加这个异常捕获,就仅仅是为了使程序不报错吗? 哪怕你打印个日志也行啊,后续修改时也方便定位到是什么时候调用,出现了什么问题。
try { int intValue = Convert.ToInt32(defauleRule);} catch (Exception e) { // 处理异常 Debug.LogError(e); //throw e;}
PS:打印日志级别一定要用警告,这样监控系统就能时地监控到异常了。
6. 优化方法参数
loadConfigFile(int gameKind, bool isGroup, string ruleName, string tableConsumeType, bool isTip, int tipType, string defaultRule = "", Action changeRuleAction = null)
这么多的参数,计算有详细的注释也难免会有传值错误的时候吧。
自己使用时还勉强能用,一旦需要同事之间配合,光看到这么多的参数,就觉得头大了~建议将逻辑分隔,这么多参数的方法肯定也是很臃肿的;适当的将单独的功能分隔开,是很好的处理方式。这样即使得代码逻辑清晰,也方便后续维护扩展。
7.使用短函数
试想一下:
- 有一个1000行的方法,里面逻辑写的非常完善,命名规范,计算方式也是解决问题的最优解;
- 另外一个是实现同样逻辑的代码,将上面的逻辑分成了几个方法,方法用途明确,局部变量名不是很规范(甚至有的很随意)。
你觉得这两种代码你更倾向于阅读哪个?或者说那种形式的更易懂?
最后需要明确一个错误:
单个文件一万行代码是没问题的,单个函数一千行代码也是没问题的。总结
希望上述七条对你写出好的代码有所帮助。若你还有其他的好习惯,欢迎你留言分享出来,供大家学习!
转载地址:https://czhenya.blog.csdn.net/article/details/114955258 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月09日 12时27分49秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C语言:线程同步之信号量(sem_init,sem_post,sem_wait)
2019-04-30
Linux ALSA声卡驱动之二:声卡的创建
2019-04-30
Linux ALSA声卡驱动之三:PCM设备的创建
2019-04-30
Linux ALSA声卡驱动之四:Control设备的创建
2019-04-30
Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)
2019-04-30
RT-thread相关
2019-04-30
Linux 2.6内核Makefile浅析
2019-04-30
编译和链接的过程
2019-04-30
Git学习(二):git-rev-parse命令初识
2019-04-30
vim字符串替换
2019-04-30
C语言:堆和栈的区别是什么?
2019-04-30
C语言:二级指针(指向指针的指针)详解
2019-04-30
C语言:断言assert函数完全攻略
2019-04-30
C语言:命令行选项解析函数---getopt()和getopt_long()
2019-04-30
C语言:inline,static inline
2019-04-30
Git学习(三):Git 撤销commit文件 和 回退push的文件
2019-04-30
WAV系列之一:G711编解码原理及代码实现
2019-04-30
WAV系列之二:ADPCM编解码原理及代码实现
2019-04-30