导语:要想提高编程能力,养成良好的编程习惯是非常必要的,这是因为良好的编程习惯不仅仅使编写的代码看上去有规范的美感,还使编写的代码具有良好的易读性、扩展性和维护性等优点。那么,有哪些编程习惯是比较重要的呢?我们一起来看看吧!
![627e3ae82ab3e4f7f85030e2bbf114e1.png](https://i-blog.csdnimg.cn/blog_migrate/b6f898a3f30de894bee21b7210e8a682.jpeg)
1.增强代码的可读性
一个优秀程序员编写的代码不仅体现在代码的质量上,而且体现在代码的可读性上。由于我们编写的代码是给计算机运行和供别人阅读的,所以在编写代码时要兼顾这两方面。
对于如何提高代码的可读性,大致可以从以下5个方面进行。
(1)格式化代码
可能有不少人对于代码的格式不屑一顾,但是杂乱无章的代码会让阅读的人心情烦乱,而那些井井有条的代码会给人一种赏心悦目的感觉。因此在编写代码的时候要遵循正规的编写规范,注意逻辑上的缩进。
(2)适当的注释
有人很少对自己编写的代码进行注释,但是我们要牢记,所编写的代码是给别人阅读的,这些人包括参与项目的其他编程人员和维护人员。要想让别人能够清楚地了解所编写代码的功能,注释是必不可少的。
(3)有含义鲜明的标识符
在代码中会涉及取变量名、函数名等,这时最好能够做到见名识意,通过名字就知道其所体现的功能。
(4)良好的逻辑性
前面讲解goto语句的时候就特别强调,要慎用goto语句,因为goto语句大大降低了代码的可读性,同时goto语句不容易控制,所以不要在代码中随便使用goto语句进行任意跳转。
(5)附加文档
有些程序员很少对所编写的代码附加说明文档,充其量写上注释,但是如果为所编写的代码加上一个附加文档,就能够让别人对代码有个快速的认识。同时,对于编写代码的人来说,在很久之后再次接触该代码时,能够通过附加文档快速对代码有个整体性认识。
![5004910a8909e204597d1429a84e1978.png](https://i-blog.csdnimg.cn/blog_migrate/89d39a141ab22fe4f955160d40c10844.jpeg)
2.防止内存错误
内存错误可以说是程序员最为头疼的问题,其实很多内存问题都是在编程的时候埋下的种子,往往是可以避免的。出现最多的一种内存错误就是对于指针的引用。要想尽可能地避免内存错误,我们就要养成一些良好的编程习惯。
(1)指针的初始化
对于指针,我们在定义的时候要养成将其初始化为NULL的习惯。
(2)释放申请的内存空间
经常会用到malloc等函数来进行堆内存的分配,但是经常会发生有始无终的情况,即申请的内存没有及时释放,会导致内存泄露,最终出现内存错误。
(3)文件指针的打开
很多时候,我们没有判断文件的打开操作是否成功就开始继续读写操作,这也是经常发生的内存错误之一。
(4)文件指针的关闭
文件指针的关闭相对来说不是那么严格,但是需要留意的是,在向打开的文件中写数据的时候,如果在退出之前没有关闭文件,缓冲区中的数据就没有写入文件中,进而导致数据丢失。
(5)判断是否成功分配内存
堆内存的分配并不是每次都能成功,所以在分配堆内存空间时需要注意判断分配操作是否成功,以防止接下来的操作不能有效进行。
![51656692062be32a3159fa3daf4b1406.png](https://i-blog.csdnimg.cn/blog_migrate/dc5d3d7b79e28f72d4268efc2cbe7bf3.jpeg)
3.提高代码的运行速度
多数的程序员在完成代码的编写后都会对代码进行多次优化,使代码的运行速度更快,提高代码的运行速度是每个程序员都追求的目标。提高代码的运行速度不仅仅体现在对算法的选择上,还有以下这些因素。
(1)学会使用内联函数
如果只有短短几行代码的函数在运行过程中被多次调用到,并且该函数也符合内联函数的规则,那么可以将其定义为内联函数,这样可以减小函数调用的时间开销。
(2)合理选用运算符
采用不同的方法可以实现相同的效果,但是需要记住,乘法和除法运算的执行时间比进行移位运算要多,所以在能够用移位替代乘除法的时候,要采用移位运算来处理。
(3)定义合适的变量
变量的类型对代码的执行时间也有很大的影响,典型的情况是图像的处理,采用单精度或者双精度时的处理时间比采用整型时的处理时间要长,若是对精度要求不高,对实时性要求较高的场合,如果可以采用short型来进行处理,可以大大节省处理时间。
(4)学会使用volatile
在前面的代码中讲解了如何使用volatile,对于同样的代码,采用volatile会使运行时间大为减少。
![8a8fd24f196a0d063ceb6753d767ad26.png](https://i-blog.csdnimg.cn/blog_migrate/6fd3e6a5c5ea5253d2d3a2addbdc7084.jpeg)
4.高内聚低耦合
“高内聚低耦合”对于每个程序员来说是耳熟能详的,它是软件工程中的概念,是判断设计好坏的标准,主要在面向对象的设计中用于判断类的内聚性是否高,耦合度是否低。但这并不意味着在C语言这种面向过程的程序设计中,我们可以不用关注高内聚低耦合这一设计思想。那么到底什么是高内聚低耦合呢?所谓高内聚,指的是模块中元素之间的紧密程度,而低耦合则指不同模块间的互连程度。
那么高内聚低耦合的程序设计到底有什么优势呢?如果仅从开始的过程来看,短期内,它并没有表现出什么优点,甚至会影响程序的开发进度,因为高内聚低耦合的程序对开发设计人员提出了更高的要求。高内聚低耦合的好处体现在程序持续发展的过程中,它具有更好的重用性、维护性、扩展性,可以更高效地完成维护开发,持续支持业务的发展,而不会成为业务发展的障碍。
鉴于高内聚低耦合的以上优点,我们该如何在编程中实现高内聚低耦合呢?首先需要明白的一点就是高内聚低耦合本身就是矛盾的共存体,所以在编程的时候只能找到一个平衡点,使设计尽可能达到最佳。为了实现高内聚,就要在编程的时候尽可能地实现模块内各个元素彼此结合的紧密程度,高内聚也常被用来度量内部元素之间的紧密程度;而低耦合则要求尽可能减少模块之间的接口,使模块之间独立地工作,独立地完成其功能,模块之间接口的数量可用来衡量模块之间的依赖程度。
另外想要成为一个优秀的、有能力程序员的话,其实作为一个开发者或者编程学习者,有一个学习的氛围跟交流圈子特别重要!这里我推荐一个C语言C+交流Q群,7-4-1-8-1-8-6-5-2,不管你是大牛还是小白,大家都一起成长进步。
![30c9b082972ff6c92d4437f5aca3cecd.png](https://i-blog.csdnimg.cn/blog_migrate/c4f9a84d219f37291f1d08a2959a22fe.jpeg)
5.提高代码的复用率
提到如何提高代码的复用率,很多人的第一反应可能是采用泛型方法,遗憾的是,C语言并不支持该方法。提高代码的复用率一直是大多数程序员所热衷追求的,很多有经验的程序员在编程的过程中会将那些时常用到的函数模块提取出来,由于经过多次的编写,因此这些功能模块相对都比较稳定,在查错的时候也可以跳过复用的这部分代码,进而加快了对程序的调试。
当然,除了对这种模块的复用外,在编写的代码中还存在其他复用的地方。在写完代码之后发现代码中有很多相似的地方,这种情况非常常见,如何去掉这些重复的代码呢?这是在编写代码的过程中所要解决的问题之一。提高代码的复用率就是一个消除代码中那些重复出现的代码块,将其提炼出来作为一个单独的处理方法,这样在精简代码的同时,也使代码的复用率得以提高。在最初编程的时候先按照一个最佳方案进行,之后分析其中的功能模块,看看功能模块之间是否可以进行划分,同时将那些具有相同功能的代码提炼出来作为一个新的功能模块,进而使代码的复用率得以大大提高。
![2384c7f3c263000c15917a94f4c3e972.png](https://i-blog.csdnimg.cn/blog_migrate/e0acfd59d372d1fb582c3ca7dc70be69.jpeg)
6.养成重构的习惯
我们更多的时候是在面向对象的编程中听到重构一词,但是并不是说在C语言这种面向过程的编程语言中就没有重构,那么,到底什么是重构呢?所谓的重构,指的是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量和性能,使程序的设计模式和架构更趋合理,以提高软件的扩展性和维护性。
C语言虽然是面向过程的,但是我们仍然有必要在编写C语言程序时养成一种重构的习惯,从而改善程序的性能且便于日后维护。对于C语言这种面向过程的语言,我们虽然不可能完全将面向对象的方法照搬过来,但是它们的思想都是一样的。重构给人的感觉可能是重新构造,但是重构并不是对所编写代码整体性的颠覆,而是在不改变现有功能的基础之上对其进行一些修补工作,进而使代码具有良好的可扩展性和可维护性。
最初重构时需要花费一些开发时间,但是综合来看,这对开发来说绝对是值得的,因为在重构的时候我们不仅仅可以发现其中的Bug,还可以改善设计,使设计更加符合要求,进而改善程序的扩展性和维护性。
由于在开始编程的时候有些问题无法预见,可能只是从众多的设计方案中选择了一个最佳的方案,这就使选择的方案不一定就是完全符合要求的,难免需要在开发的过程中进行适当修改,因此我们可以将项目分为多个阶段来进行,在每个阶段都对现有的代码进行重构。
其实作为一个开发者或者编程学习者,有一个学习的氛围跟一个交流圈子特别重要!我自己也是一名从事了多年开发的C/C++程序员,组建了一个编程交流群7-4-1-8-1-8-6-5-2,如果有兴趣的同学可以关注加群哦!不管你是大牛还是小白,大家都一起成长进步。群内还会不定期分享学习资源,欢迎各位有兴趣的小伙伴哦。