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读者朋友们一起加油,成为优秀程序员,写出一手优雅的代码,冲!

如何将代码写的更加优雅?相关推荐

  1. python写出的程序如何给别人使用-涨姿势!这些小技巧让小白也可以写出更优雅的Python代码!...

    原标题:涨姿势!这些小技巧让小白也可以写出更优雅的Python代码! 一.前言 我前两天回答了两个Python相关的问题,收到了很多赞,从答案被收藏的情况来看,确实对不少人都很有帮助,所以我也很开心. ...

  2. Python代码如何写的更优雅

    首先最重要的一点, 忘掉其他语言里的写法, 尝试使用Python风格进行code, 熟练之后,你会觉得她真的很美! 1. 多个值进行初始化 # > yes s1,s2,s3 = [],[],0 ...

  3. 雷军:有人说我写的代码像诗一样优雅~

    全世界只有3.14 % 的人关注了 爆炸吧知识 整合整理:程序员的那些事(id:iProgrammer) 雷军的代码像诗一样优雅 ↓↓↓ 有些网友在评论中质疑,说雷军代码不会是「屎」一样优雅吧.说这话 ...

  4. google python代码规范_Python代码这样写才规范优雅! (二)

    前文传送门:Python代码这样写才规范优雅! (一)参考:https://www.python.org/dev/peps/pep-0008/Python PEP8编码规范的内容如下: 1. Intr ...

  5. 如何写出更优雅的代码——编程范式简述

    <如何写出更优雅的代码--编程范式简述>源站链接,阅读体检更佳! 什么是程序? 1976年,瑞士计算机科学家,Algol W,Modula,Oberon 和 Pascal 语言的设计师 N ...

  6. (三)改掉这些坏习惯,还怕写不出优雅的代码?

    Code Review 是一场苦涩但有意思的修行. 书接上篇,本次一起继续探讨一下,该如何写出优雅的代码? 1. 编码时:搞的复杂并不好  坏习惯一:多余的 if/else. 反例: 类似上面这种写法 ...

  7. 如何将前端代码写的优雅?

    前言 作为一个前端工程师,令我最头疼的两件事,一个是逻辑混乱且没有注释的js代码,还有一个就是污染严重.命名奇葩的css样式了. 在项目开发中,扎实的基础和高超的技术水平固然重要,但是良好的编码风格也 ...

  8. python优雅代码大全_10个Python技巧帮你写出更优雅的代码

    阅读本文需要 2 分钟,公众号 somenzz ,欢迎学习 Python 的朋友订阅. 现在写代码的门槛非常低了,少儿都开始编程了,但从代码的风格一眼看出编码水平.是的,写代码是容易的,写出易读的代码 ...

  9. 写出结构优雅代码的4个技巧

    写出结构优雅代码就像成为武林高手一样,需要积累思考勤学苦练.冰冻三尺非一日之寒.成熟的业界套路肯定是没有的,因为代码也有思想流派.现在是百家齐放的时代.code review时,一个不留神就会吵起来. ...

  10. 【编程之美】如何将代码写得像诗一样优雅?

    01.文章目录 文章目录 01.文章目录 02.文档级注释 03.函数的外在阐述 04.函数的内在阐述 05.附录(小结) 02.文档级注释 何谓文档级注释? 我们先看下面一张图片. 看了图片,相信大 ...

最新文章

  1. 编写精美的聊天界面(左边显示接收消息,右边显示发送消息)(项目已上传GitHub)
  2. html5+css3网页制作:三栏布局宽度自适应,css三栏布局的五种写法,中间自适应,左右宽度固定...
  3. angularjs 导出excel php,AngularJS 导出Excel指令
  4. 23种设计模式之访问者模式
  5. linux对某个文件进行操作步骤,实验二 Linux系统简单文件操作命令
  6. 自己构建React项目
  7. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_5_文件存储的原理和记事本打开文本显示原理...
  8. 步进电机工作原理 驱动 _28BYJ-48 以及程序实例下载
  9. 【训练题55:尺取 + 高阶等差】Another String | HDU7015 | 杭电多校五 04题
  10. you-get下载酷我音乐付费歌曲
  11. VS2015 还是VS2017 好用_如何卸载清理vs2017前vs2015,vs2013等版本
  12. python求和1到100_python实现1加到100
  13. SAS硬盘与SATA硬盘有什么区别
  14. Python 计算变上限二重积分的数值模拟基础
  15. jQuery手机版日历插件带农历
  16. Python-Selenium-OSError: [WinError 6] 句柄无效
  17. matlab计算翼型升力系数,naca0012翼型升力系数
  18. JavaMail连接Office 365使用XOAUTH2身份认证
  19. html怎么显示一个点赞的心形,jquery心形点赞关注效果的简单实现
  20. MethodParameter

热门文章

  1. 图解:什么是拓扑排序?
  2. linux下USB设备编号固定
  3. 当更高性能来到平板 — ThinkPad X1 Tablet Evo 长测
  4. 《阅读的方法》做一点小努力
  5. 构造Dominator Tree以及Dominator Frontier
  6. A Question of Ingestion Gym - 101673G
  7. 关于动车:动车票假如象飞机票那样卖会如何?
  8. Python写反斜杠\a
  9. Elasticsearch生产集群健康状况为yellow原因分析和解决方案
  10. CANopen高级协议详解