一个好的程序员最让人称赞的莫过于能写出一手好的代码,何谓好的代码?好代码一般具有易读、易懂、易调试、易改、缺陷少等优点,想要敲出一手好代码,一朝一夕是不可能的,我们需要大量时间去实践,但这具有长远意义,因为从长期来看,我们以后可以花更少的时间和精力去维护和复用之前的代码,那么作为程序员,怎么样才能敲出一手好代码呢?
一、遵循单一责任原则
函数在程序员的库中是单一最重要的抽象形式。可以被复用的机会越多,我们要写的代码就越少,这些代码就越可靠。遵循单一责任原则的小小函数更有可能被重新使用。
二、最小化共享状态
应该将函数之间的隐式共享状态最小化,无论它是文件作用域变量还是对象的成员字段,这有利于显式的将所需的值作为参数,当明确函数实现所需的结果时,代码变得容易理解和重用,所以,我们应该优先选择静态无状态变量,而不是对象的成员变量。
三、本地化副作用
理想的副作用,比如打印到控制台、记录、改变全局状态、文件操作系统等,应该放置在单独的模块中,而不是分散在整个代码中,功能上副作用往往违反了单一的责任原则。
四、优先选择不可变的对象
如果一个对象的状态在其构造函数中设置一次,并且不再更改,则调试变得容易得多,因为一旦构造正确就确保有效,这是降低软件项目复杂性的最简单的方法之一。
五、多用接口少用类
接受接口的函数或C++中的模板参数或概念,比在类上操作的函数可重用性更强。
六、对模块应用良好的原则
将软件项目分解成更小的模块,比如库和应用程序,以实现模块化重用,模块的一些关键原则有:最小化依赖关系、每个项目都应该有一个单一明确的功能、不要重复。我们应该努力让我们的项目保持小巧和明确。
七、避免继承
在面向对象编程中,继承,特别是虚拟函数在可重用性方面往往是一个死穴,我们很少能成功的使用能覆盖类的库。
八、同设计和开发一样进行测试
我们在开始编写测试代码时,编码测试就遵循了许多知道方针,它有助于早点就错误暴露出来,避免编写无用的测试,良好的编码意味着更高级的测试在显示缺陷方面更有效。
九、优先选择而不是手写标准库
手写标准库几乎是浪费时间和精力,我们很有可能制造出新的bug并将其引入一个新的地方。
十、避免写新代码
最好的代码就是不用被复写的代码,代码越多,缺陷就越多,找到并修复bug就越困难,在编写代码前,先确认下有没有工具、函数或库已经实现了我们所需的功能。
最后,编程就好像是一项运动或一种艺术形式,只有通过不断的练习、学习,才能不断的提高代码的质量,这将有利于我们成为更高效的程序员。
推荐相关阅读: