如何将代码写的更加优雅?
Hello Everyone,好像又有好久没发文章了哈哈哈,不过没关系,好的文章一般都是需要经过长久的酝酿的,就好比你正在看的这篇文章,一看标题就知道肯定是干货!(开玩笑哈~)
为什么要写这篇文章呢,其实并不是教大家去怎么写好代码,因为我自知目前没有此番阅历和高度,只是觉得自己从上学、实习到工作敲代码的日子和代码量也有了一定的时间和经验了,因此做一篇关于写出优雅代码的总结,并且从中找出披露和不足,当然十分希望读者能从客观的角度给出建议,本人先表示感激!
下面我们开始正文吧:
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读者朋友们一起加油,成为优秀程序员,写出一手优雅的代码,冲!
相关文章
- #华为云·寻找黑马程序员#【代码重构之路】如何优雅的关闭外部资源
- Git 修复 bug 切换分支时,如何保存修改过的代码(即如何保存现场)?
- 【第六篇】androidEventbus源代码阅读和分析之unregister代码分析
- 如何修改Zend Studio代码字体和大小
- 如何再window下统计自己写的代码行
- 既然Talk is cheap, 那么就用代码教你如何进行正交设计
- 如何使用ABAP代码创建SAP Product Category
- 如何得到React应用转换后的JavaScript代码
- DL:基于keras和tensorflow 框架保存网络结构/网络拓扑图/网络模型(json、yaml、h5等文件)注意事项及代码实现(保存和加载.h5模型文件案例)之详细攻略
- DataScience:数据预处理/特征工程之两大类别特征、四大数据类型(数值型/类别型/字符串型/时间型简介、代码实现(数值型特征离散化/类别型特征编码数字化)、案例应用之详细攻略
- 使用一个命令使您的 Python 代码更优雅、更易读或更现代
- 数据集和神经网络共同进步之代码之路
- 《低代码发展白皮书(2022年)》&《2022低代码·无代码应用案例汇编》,发布了
- 【Android Gradle 插件】自定义 Gradle 任务 ④ ( Task#doLast 函数用法 | 自定义 Gradle 任务代码示例 )
- 如何向AcmeAir注入问题代码
- 程序的模块化的一些见解6-读牛人代码之感
- Springboot中如何优雅的写好Controller层代码
- 如何一行代码安装ROS|2022最新版|一行代码安装ROS2|一行代码解决rosdep|一行代码配置多ROS环境