良好的编程习惯有哪些?

1.代码低耦合

低耦合性是结构良好程序的特性,低耦合性程序的可读性、可维护性、可重用性和扩展性会比较好,而紧耦合模块或者系统之间关系太紧密,存在相互调用,如果修改其中一个对象,那么另一个对象也需要修改。当两个对象过于紧耦合时,修改代码可能会是一场噩梦,同时更有可能在每次修改时引入bug。


2.避免上帝对象

上帝对象是指包含太多变量和函数的大型类或模块。“知道得太多”和“做得太多”都会造成一些问题,原因有以下两点:

  1. 其他类或模块会变得过分依赖于数据(紧密耦合)。
  2. 由于所有代码都挤在同一个地方,使得整体结构杂乱无章。相较于上帝对象,分解为许多小对象可能会更好。

3.拒绝长函数

顾名思义,长函数是指函数太长了。虽然没有一个特定的数字表示多少行代码对于一个函数来说“太长”,但当你看到这个函数时,你就会知道它是不是太长。一个长函数意味着包含了太多的功能实现。一般情况下长函数应该被分解成许多子函数,其中每个子函数被设计为处理单个任务或问题。理想情况下,原始的长函数将变成一个子函数调用列表,从而使代码更清晰,更易于阅读。


4.标识符命名有意义

一个或两个字母的变量名、无明显意义的函数名称、过分修饰的类名、使用变量类型标记的变量名称(例如,b_isCounted表示布尔变量),或者在一个代码中混合使用不同的命名规则,所有这些都将导致代码难以阅读,难以理解和难以维护。一般而言,变量名称应该简短但具有描述性函数名通常应该至少有一个动词,并且函数名称应该表现出该函数的功能,但是不要使用太多的单词,类名也是如此。


5.杜绝幻数

当你正在浏览一些其他人写的代码,这时你发现了一些硬编码的数字。它们也许是if语句的一部分,或者是一些难以理解的计算的一部分,看起来没什么意义,而你需要修改该模块,但却无法理解这些数字的含义,这会使你非常苦恼。因此在编程时,应该不惜一切代价避免这些所谓的“幻数”。硬编码数字在写的时侯是有意义的,但是它们很快就会失去所有含义 ,特别是当其他人试图维护你的代码时。其中一种解决方法是留下数字的注释,但更好的选择是将幻数转换为常量变量(用于计算)或枚举(用于if语句和switch语句)通过给幻数起一个名字,代码可读性一目了然,同时也不太容易出现错误。


6.避免深度嵌套

深度嵌套的代码并不总是很糟糕,但可能会产生问题,因为它很难理解,特别是变量没有被很好地命名的情况下,甚至更加难以修改。如果你发现自己正在编写一个双重,三重甚至四重for循环,那么代码将可能试图在超出自身的范围外查找数据。那么你应该提供一种方法,使之可以通过包含该数据的对象或模块函数调用来请求数据。另一方面,深层嵌套的if语句通常表明你试图在单个函数或类中处理过多的逻辑代码块。事实上,深层嵌套和长函数往往是同时出现的。如果你的代码有大量的switch语句或嵌套的if-then-else语句,你可能需要实现一个状态机或策略模式


7.简洁的代码

你在程序多个无关部分执行相同的逻辑代码块,然后发现需要修改该逻辑代码块,但是却不记得所有执行该代码块的地方,假设最终你只修改了5个位置,而实际上有8个位置的代码块需要进行更改,这就会导致结果出现错误。一般情况下转化为函数是比较好的习惯,这样如果你需要修改此逻辑代码块,就只需要修改该方法,再将其应用于所有调用该方法的地方就可以了


8.代码注释

代码在任何地方都没有注释。没有函数的功能注释,没有类的使用概述,没有对算法的解释等等。有人可能会说,写得好的代码不需要注释,但事实上,即使是写的最好的代码也不如注释更容易被理解。在写注释的时候,要记住你的目的是为解释代码块为什么存在,而不是解释代码块在做什么。注释能帮助你更好的理解自己和他人的代码,减少工作量,所以不要忽视他们。

https://www.zhihu.com/question/23110763/answer/740693484

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值