代码整洁之道培训总结
作者:翁松秀
代码整洁之道培训总结
文章目录
- 代码整洁之道培训总结
- 1. 本次培训的总结
- 1.1培训目的
- 1.2代码简洁——思想总结
- 1.3代码简洁——函数总结
- 1.4代码简洁——重构总结
- 1.5代码简洁——设计总结
- 1.6代码简洁——工具总结
- 1.7培训总结
- 2. 对团队或者组织有哪些建议?
- 2.1 理论和实践相结合,做到知行合一
- 2.2 多组织培训
1. 本次培训的总结
1.1培训目的
人类行为都是以目的为导向,培训也是。
这次培训目的很明确,就是让我们的代码更加简洁。为了实现这个目的,我们需要搞明白三个问题:
- 什么是整洁的代码?
- 为什么要让代码简洁?
- 怎么让代码简洁?
这次培训围绕这三个问题,从思想、函数、重构、设计和工具五个方面讲解代码的简洁之道,最后只为了实现一个目的,也就是本次培训的意义:让我们的代码更加简洁。
培训是双向的,老师们会围绕着培训的目的,从各个维度给我们传授代码简洁的知识和技能,我们也应该看准这个目的,吸收消化,不然老师传授的内容太多,容易导致消化不良。
1.2代码简洁——思想总结
在软件开发当中,我们有时候会很看重软件的技术体系和架构设计,往往会忽略软件的代码质量,而糟糕的代码质量会使我们的软件变得臃肿、隐藏BUG和难以维护。所以在开发当中技术体系、架构设计和代码质量同等重要,三足鼎立。
代码质量的衡量标准除了实现功能以外,还有一个很重要的标准,就是代码是否简洁。因为我们的代码不仅仅要让机器能看懂,在后期的维护当中更多的是要让人能看懂,所以代码是否简洁,也是代码质量的衡量标准之一。简洁的代码能在很大程度上降低开发和维护的成本。
什么是简洁的代码?
代码的性能主要是对机器来说的,简洁主要是对人来说的,通俗一点理解,所谓简洁的代码,简单直接,从不隐藏设计者的意图,并且让人读起来轻松自如,赏心悦目。从整体上看,代码逻辑应该直截了当,功能让人一目了然,一眼就能看出这个程序,这个模块要实现什么功能,怎么实现。比如目录和实现的分离,让阅读的人一眼就能看出代码的模块划分。从细节上看,代码中应该不存在BUG和坏味道等杂质,包括:命名不规范、重复代码、过长的方法、过大的类、过长的参数列、散弹式修改、依恋情结、Switch语句、临时变量、过度设计、不用的方法、资源不关闭和不符合SOFA原则等。
1.3代码简洁——函数总结
为什么需要函数?
function:功能,函数。函数是实现某个功能的封装代码。我们需要函数来封装我们的功能,但如果所有的代码都写在一个函数里面,就会使这个函数变得庞杂、子功能模块划分不清晰、不便于我们阅读和维护。
所以在我们的代码中,应该适当使用函数,将我们业务逻辑按功能模块划分,变成简单的子功能模块、实现目录与实现的分离,使模糊的业务逻辑变得清晰、使重复的功能得以复用。
如何衡量一个函数的复杂度?
除了一些基本的衡量标准,比如代码行数、参数个数、变量个数、嵌套层数等,我们主要采用国际标准的**圈复杂度来衡量一个函数的复杂度。**通过这次培训,我们知道了什么是圈复杂度,如何计算一个函数的复杂度,以及函数的十个一原则和SOFA原则,让我们学会了如何写函数,如何做到目录与实现的分离,实现函数抽象层次一致,如何降低一个函数的圈复杂度。
1.4代码简洁——重构总结
通过前面的培训,我们弄清楚了什么是简洁的代码,以及为什么要实现代码简洁,现在我们需要弄清楚,怎么让我们的代码变得简洁。
重构。
重构是指不改变软件的行为,对软件内部结构的重新调整,提高其可理解性,降低维护成本。 通过重构,我们可以降低程序和函数的复杂度,使我们的代码变得更加简洁。
我们在培训中学习了11种重构方法:封装重复代码、拆分过长函数、拆分过大类、对象传参、拆分发散式类、归并散弹式类、断开依恋情结、抽取数据泥团、多态替代多分支、公布委托对象、封装数据类。
重构贯穿我们编码的整个阶段,在需求分析,系统设计,编码实现,单元测试之后对我们的代码进行重构,然后进行单元测试,再进行重构,直到我们对代码质量满意为止,最后才发布我们的代码。
1.5代码简洁——设计总结
设计模式是人们从问题中提炼出来的一种通用的解决方案,是经过长时间的试验和错误总结出来的,特定的设计模式适用于解决某一类问题。
在软件开发的设计阶段,需要我们结合具体的业务逻辑,来选择合适的设计模式,除此之外,在编码实现的重构阶段,我们仍然可以采用设计模式来对我们的功能模块进行重构。从而提高系统的可用性、健壮性、可扩展性,降低开发和维护成本。
通过培训,我们了解了设计模式的基本概念,设计模式原则与分类,以及一些常用的设计模式的概念和使用方法。
师傅领进门,修行看个人。短短一节课老师不可能把设计模式所有的内容都灌输给我们,比如老师只能给我们简单介绍设计模式6大原则和23种设计模式,只能给我们一个敲门砖,我们只有通过后面不断地学习才能理解和掌握这6大原则和23个模式,结合具体的业务应用于我们的实际开发当中,打开设计模式的大门。
1.6代码简洁——工具总结
工欲善其事,必先利其器。 对于我们开发人员来说,IDE是生产工具,熟练掌握工具可以大幅度提高我们的开发效率。
如何高效地进行重构?
手工重构很容易引起代码错误,老师在培训过程中给我们介绍了几种IDE中常用的一些重构的操作命令和快捷键,比如重命名,移动类、方法和成员变量,修改方法签名,提取方法,提取接口和上推下移等一些常用的重构命令,在实际开发中熟练掌握这些命令,能大大降低我们重构的时间成本和引起代码错误的概率。
另外,老师还给我们介绍了代码质量分析工具Sonar,用于分析代码,检测代码的坏味道,计算复杂度,单元测试等。熟悉Sonar能有效地管理我们的代码,保证代码质量,降低维护成本。
1.7培训总结
老师们通过这次培训,围绕着让我们代码更加简洁的目的,从思想、函数、重构、设计和工具五个方面,让我们明白了什么是简洁的代码,为什么要让代码简洁以及怎么让我们的代码变得更加简洁。
通过培训,公司制定了程序设计师的十三大原则,明确规范我们的编码习惯,提高代码的质量,降低项目交接和维护的成本。
另外我们应该从思想上摆正编码态度,理解函数的作用,掌握重构的方法,善于使用设计模式,最后结合我们的工具来实现我们的代码规范,让我们的代码更加简洁。
2. 对团队或者组织有哪些建议?
2.1 理论和实践相结合,做到知行合一
通过培训,从思想、函数、重构、设计和工具五个维度让我们了解了什么是简洁的代码,为什么要让代码简洁以及怎么让代码简洁,从思想上给我们带来了观念的改变,包括编码的态度和习惯,让我们掌握了重构代码的方法。
公司应该贯彻程序设计师的十三大原则,设置相应的考核制度,硬性要求开发人员遵守编码规范,提高软件开发的代码质量,降低项目交接和维护的成本。让大家将培训中学到的知识应用于实际开发当中,理论和实践相结合,做到知行合一。使每一个研发人员做到有底线,有规范。这也是培训的最终目的,让我们的代码更加简洁。
2.2 多组织培训
如果条件允许,公司可以多组织类似的专题培训,比如说项目管理,提高大家的知识水平和能力,为公司创造更大的价值。
代码整洁之道培训总结相关推荐
- 重读【代码整洁之道】
一.前言 [代码整洁之道]很经典,但也有些过时,翻译上也有些啰嗦,但总体上是好书.通过对本书核心内容的摘抄,结合自己的经验,整理了一些精简的点,这样你就省的去啃那本400多页的书了. 软件质量 = 架 ...
- 《代码整洁之道》(Clean Code)- 读书笔记
一.关于Bob大叔的Clean Code <代码整洁之道>主要讲述了一系列行之有效的整洁代码操作实践.软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发流派 ...
- 代码整洁之道(一)最佳实践小结
摘要: Any fool can write code that a computer can understand. Good programmers write code that humans ...
- 2015年第11本:代码整洁之道Clean Code
前一段时间一直在看英文小说,在读到<Before I fall>这本书时,读了40%多实在看不下去了,受不了美国人啰啰嗦嗦的写作风格,还是读IT专业书吧. 从5月9日开始看<代码整洁 ...
- 《代码整洁之道:程序员的职业素养》一一1.5 参考文献
本节书摘来自异步社区出版社<代码整洁之道:程序员的职业素养>一书中的第1章,第1.5节,作者:[美]Robert C. Martin(罗伯特 C. 马丁),更多章节内容可以访问云栖社区&q ...
- 代码整洁之道(Clean Code)- 读书笔记
Sorry, 许久未更新文章了,主要因为刚刚换了一家新公司,忙于组建团队(建设.招聘.流程.框架等)与熟悉公司业务,还有领导给的其他工作等等,实在是没有时间更新了.最近在和团队分享Bob大叔的< ...
- 《代码整洁之道 Clean Architecture》-读书笔记
大家好,我是烤鸭: 关于<代码整洁之道>,记录一下读书笔记. 代码整洁之道 第一章 整洁代码 整洁代码的艺术 第二章 有意义的命名 避免误导 有意义的区分 使用读得出来和可搜索的名字 避免 ...
- 代码整洁之道(一)最佳实践小结 1
摘要: Any fool can write code that a computer can understand. Good programmers write code that humans ...
- [读书笔记] 代码整洁之道
书的示例是Java语言编写的,虽说不会影响阅读,但是后面几章讲应用这套方法论的时候,大篇幅的Java代码分析还是挺难受的,而且连java测试框架Junit都要细讲,对于非Java系的开发者来说,一些内 ...
最新文章
- Powershell管理系列(十)邮件联系人及邮件用户的管理
- 大数据,人工智能网易百度这些公司都走在前列
- First update-【计算机方面的权威外文数据库(全)】
- 在字符串中查找指定的字符串--strstr
- 开发中最基本的对数据的增删改查SQL
- 牛客网_PAT乙级_1018人口普查(20)
- 手机端校验的那些事情(简单实例)
- 10个最佳jQuery Lightbox效果插件收集
- 标准I/O缓冲:全缓冲、行缓冲、无缓冲
- 代码安全/权限控制/敏感数据规范多多 - 第395篇
- 计算机网络管理员基础知识,计算机网络管理员(基础知识)
- Dw怎么背景图片设置
- JPA使用nativeQuery多参数查询注意点
- html5中header的作用,HTML5中的header标签是什么意思?HTML5中header标签具体使用方法你知道吗?...
- 复习Python爬取必应的壁纸
- java发送邮件被退回,从Java应用程序发送电子邮件中的异常:中继被拒绝
- NVIDIA JETSON XAVIER NX TX2 NANO 比较及与显卡算力对比
- 电话销售话术模板有哪些 电话销售技巧
- String 和 StringBuider
- CS115 - Computer Simulation, Assignment