写好代码的七条好习惯

举报
陈言必行 发表于 2021/08/14 00:55:21 2021/08/14
【摘要】 写好代码的七条好习惯 1.命名明确2.命名风格3.写注释4.尽可能把代码格式化5.触发异常要处理6. 优化方法参数7.使用短函数总结 1.命名明确 尽量做到见名知意。 能用简洁英文表示尽量用英文 // 用户名 string userName = "Czhenya"; 12 拼音也要尽量简单的全拼表示 string yongHuMing = "Cz...

1.命名明确

尽量做到见名知意。

  • 能用简洁英文表示尽量用英文
// 用户名
string userName = "Czhenya";

  
 
  • 1
  • 2
  • 拼音也要尽量简单的全拼表示
string yongHuMing = "Czhenya";

  
 
  • 1
  • 尽量不用这种缩写
string yhm = "Czhenya";

  
 
  • 1
  • 尽量不用这种无意义命名
string n = "Czhenya";

  
 
  • 1

2.命名风格

尽量使变量/函数命名风格一致。

建议写法:

  • 驼峰命名法
// 用户名,用户ID
string userName = "Czhenya";
string userId = "123456";

  
 
  • 1
  • 2
  • 3
  • 下划线分隔
string user_name = "Czhenya";
string user_id = "123456";

  
 
  • 1
  • 2

不建议的写法:

  • 全堆在一起
string username = "Czhenya";
string userid = "123456";

  
 
  • 1
  • 2
  • 多种模式混合使用
string userName = "Czhenya";
string user_id = "123456";

  
 
  • 1
  • 2
  • 拼音和英文混合使用
string yongHuName = "Czhenya";
string yingHuId = "123456";

  
 
  • 1
  • 2

3.写注释

建议养成写注释的习惯,一是自己看为了以后维护的时候方便回忆,二是给其他人看为了同事间互相合作。

  1. 要养成写注释的习惯,不要觉得写注释是浪费时间;
  2. 精简注释内容,不要写过长的无关紧要的话;
  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;
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

怎么样有没有想打人的冲动…这写的什么啊,我估计过不了一周,自己回头来看都不愿意看,更别说维护了。


4.尽可能把代码格式化

  1. 好的缩进格式是写好代码的基础

随便写一个函数,它的格式不正规甚至是错误的,即使它再简单,也不愿意多看一眼,有没有这种感觉?

一个反向示例:

void Test()
{ int x = 1; int y; if (Random.Range(0, 2) == 0) x = -1; y = -1; int z = 3;
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  1. 尽量不要把长代码写在一行

来对比下面这两段代码,你更愿意看哪个?

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;

  
 
  • 1
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;

  
 
  • 1
  • 2
  • 3

5.触发异常要处理

之前看博客时看过类似下面这样的代码,做了异常捕获,然后就没有然后了…

try 
{ int intValue = Convert.ToInt32(defauleRule);
} 
catch (Exception e) 
{
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

难道添加这个异常捕获,就仅仅是为了使程序不报错吗? 哪怕你打印个日志也行啊,后续修改时也方便定位到是什么时候调用,出现了什么问题。

try 
{ int intValue = Convert.ToInt32(defauleRule);
} 
catch (Exception e) 
{
	// 处理异常
	Debug.LogError(e); //throw e;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

PS:打印日志级别一定要用警告,这样监控系统就能时地监控到异常了。


6. 优化方法参数

 loadConfigFile(int gameKind, bool isGroup, string ruleName, string tableConsumeType, bool isTip, int tipType, string defaultRule = "", Action changeRuleAction = null)

  
 
  • 1

这么多的参数,计算有详细的注释也难免会有传值错误的时候吧。
自己使用时还勉强能用,一旦需要同事之间配合,光看到这么多的参数,就觉得头大了~

建议将逻辑分隔,这么多参数的方法肯定也是很臃肿的;适当的将单独的功能分隔开,是很好的处理方式。这样即使得代码逻辑清晰,也方便后续维护扩展。


7.使用短函数

试想一下:

  • 有一个1000行的方法,里面逻辑写的非常完善,命名规范,计算方式也是解决问题的最优解;
  • 另外一个是实现同样逻辑的代码,将上面的逻辑分成了几个方法,方法用途明确,局部变量名不是很规范(甚至有的很随意)。

你觉得这两种代码你更倾向于阅读哪个?或者说那种形式的更易懂?

最后需要明确一个错误:
  单个文件一万行代码是没问题的,单个函数一千行代码也是没问题的。


总结

  希望上述七条对你写出好的代码有所帮助。若你还有其他的好习惯,欢迎你留言分享出来,供大家学习!

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/114955258

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200