开发者有话说|如何写出更加优雅的代码
为什么要写这篇文章呢,其实并不是教大家去怎么写好代码,因为我自知目前没有此番阅历和高度,只是觉得自己从上学、实习到工作敲代码的日子和代码量也有了一定的时间和经验了,因此做一篇关于写出优雅代码的总结,并且从中找出披露和不足,当然十分希望读者能从客观的角度给出建议,本人先表示感激!
下面我们开始正文吧:
1 何为优雅的代码?
在写出优雅的代码之前,我们需要有一个优雅的标准,那么怎么样的代码才能叫优雅呢?
(1)具有良好的可读性,代码让人容易看得懂
(2)更好的可维护性
(3)可拓展性和灵活性,要容易添加新功能,容易复用老接口
(4)简洁性:代码是否简单清晰
(5)可复用性:相同的代码不要写两遍
(6)能够合理处理异常和返回异常信息
2 如何写出更优雅的代码
写出更优雅的代码当然有很多的办法可用,办法虽好,但是我们要尽量避免过度设计,就是将原本简单的代码复杂化,为了优化而优化,要懂得取舍。
2.1 遵循软件设计的六大原则
作为一名程序员,实践能力当然是第一位的,但是有充足的理论知识我相信也能够会在工作中的某些地方不断的显现,时至今日我还清晰的记得软件设计的六大原则:
(1)单一职责原则
一个类/接口/方法只负责一项职责,并且有且只有一个需要被改变的理由。
(2)接口隔离原则
用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口,一个类对一个类的依赖应该建立在最小的接口上。
(3)开闭原则
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
(4)里氏替换原则
子类可以替换父类,即子类可以扩展父类的功能,但是不能改变父类原有的功能。
(5)依赖倒置原则
高层模块不应该依赖底层模块,二者都应该依赖其抽象。
(6)迪米特法则
一个对象应该对其他对象保持最少的了解,又叫最少知道原则。
如果大家细心就可以发现,我们日常所使用的的安卓系统、Windows 操作系统以及 IDEA、GoLand 等操作系统及软件,无一不体现这些软件设计的原则,简单的举个例子:IDEA 安装插件,就是在不修改 IDEA 源码的基础上扩展 IDEA 的功能,符合开闭原则,对软件进行了扩展。
2.2 巧用设计模式
设计模式分为三大类:
(1)创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
(2)结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
(3)行为型模式:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
所有设计模式遵循的原则就是 2.1 节中的软件设计六大原则,不断总结和提炼出的最佳实践,当然设计模式不仅仅有二十三种,所有能够符合设计原则、能让代码能加灵活的模式都可以称为设计模式。
设计模式应该是软件编码设计中最常用的优化方式,特别是在框架的源码中,诸如 Java 的 Spring、Spring MVC、Mybatis,Go 语言的 gorm、beego 等都大量的使用多种设计模式。
2.3 使用三方工具辅助
这个优化代码的方式就有些因人而异了,需要看每个人的风格和习惯,以及使用的是哪些 IDE 等等,涉及到的点主要有:
代码缩进是用空格还是 tab
if、for 等逻辑判断的使用等等
这些很多东西都是可以在 IDE 里面直接设置的,比如在写 Java 时我会在 IDEA 中安装阿里 Java 开发手册里的一个代码优化提升插件,这个大家可以试试哦。
2.4 多读技术官方文档 &优质博客
官方文档主要就是说明文档和学习文档,在其中会有代码片段的说明,我们可以加以学习和理解。
优质博客当然就多了,但是有些是一定要看的,比如写 Java 的同学要多看《Effective Java》、设计模式相关、Spring 官方博客等等,写 Go 语言的同学也有《Effective Go》等等,其中会有一些在其他地方学不到的优秀编码方式。
2.5 勤写注释
不仅要勤写注释,当然也要注意写注释的方式,因为这个也是一个比较主观的因素,每个人都有自己的风格,在这里我感觉能让大多数人读懂是最基本的。
2.6 review 代码
写完代码之后要习惯性的给自己 review 一下,看看逻辑上有没有问题,异常处理上有没有不足等等,感觉这个也是一个比较好的习惯。
3 总结
不知道大家读完之后感觉怎样,希望会有收获吧!当然只学习和了解方法不等于能够写好代码,更多的是要从实践中不断的打磨自己,将优秀的方法不断与自己的风格进行融合,打造出适合自己的方法论和编码习惯才是最好的。
最后希望能和爱好 Coding 读者朋友们一起加油,成为优秀程序员,写出一手优雅的代码,冲!
版权声明: 本文为 InfoQ 作者【Barry Yan】的原创文章。
原文链接:【http://xie.infoq.cn/article/26edc636c2fb81ea2472be25a】。文章转载请联系作者。
评论 (3 条评论)