《代码不朽:编写可维护软件的10大要则(C#版)》读后感
本书作者Joost Visser,译者张若飞。本书讲解了编写可维护代码的10个要则,从目录就可以看出这10点分别是:
- 编写短小的代码单元(15行以内,在大部分情况下还是能实现的,但是当我们使用Linq或者使用对象初始化器代码一下子就超过15行了,这点要则还是有些苛刻的)
- 编写简单的代码单元(分支不超过4个,这个还是很值得学习的)
- 不写重复代码(代码重用是很重要的技巧,然而现在大部分项目追求快速迭代,把每个功能都当成独立的来进行设计,导致很多相似重复的代码,留下了很多的技术债务)
- 保持代码单元的接口简单(参数不超过4个或者提取成对象,很实用的技巧)
- 分离模块之间的关注点(避免形成大型模块,以便能达到模块之间的松耦合,分离关注点隐藏具体实现)
- 架构组件松耦合(顶层组件之间应该做到松耦合,减少暴露细节)
- 保持架构组件之间的平衡(平衡代码中顶层组件的数量和体积,组件数量在6-12之间并且体积基本一致)
- 保持小规模代码库(代码规模尽量小,控制增长并主动减少代码体积)
- 自动化开发部署和测试(通过使用自动化框架来进行自动化测试)
- 编写简洁的代码
可以说本书的大部分要则都相当适用,并且作者也提供了大量的代码示例以及重构技巧,足见作者经验丰富,且在写作时下了一番功夫,这是一本非常好的书。
我觉得编程是一门艺术,代码是艺术的表现,掌握技术固然很重要,但是编码技巧比技术更重要,古人云:“工欲善其事,必先利其器。”。
我反对编写让人难以理解的代码,代码难以理解势必难以维护,而且这几年互联网得到了急速的发展,以前几个月甚至几年才能达到的数据量级,现在一个月甚至一周就能达到,项目的规模也越来越大,已经不再是那种一个人就能控制得了的,只有团队之间的相互协作才能更好的完成项目。那么编写简洁明了(优秀)的代码就至关重要了,它能让团队其他的成员能更好的理解代码的意图,不管是修复代码还是扩展功能都能更快上手。而想要编写优秀的代码就需要多写代码,观察代码之间的关联,使用面向对象或者模式思想进行重构,并且时常阅读其他人的代码,从别人的代码中学习优秀的编码技巧,通过自身的努力提升自己的水平,才能让编码技艺更加纯熟。
《代码不朽:编写可维护软件的10大要则(C#版)》读后感的更多相关文章
- 《DevOps软件架构师行动指南》读后感
从软件架构师视角讲解了引入DevOps实践所需要拥有的技术能力,涵盖运维.部署流水线.监控.安全与审计以及质量关注,这是本书一开始内容简介的开头,本书的作者是伦恩·拜斯(Len Bass).英戈·韦伯 ...
- nodejs开发指南读后感
nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...
- DevOps:软件架构师行动指南(文摘)
第一部分 背景 第1章 DevOps是什么 第二部分 部署流水线 第三部分 横切关注点 第四部分 案例研究 第五部分 走向未来
- 2020年DevOps工程师入门指南
DevOps兴起于2010年代,到现在DevOps已经在行业中拥有了一席之地,并在继续发展壮大. 有兴趣成为一名DevOps工程师吗?如果想要成为一名DevOps工程师,需要做到以下五点: 要有开发者 ...
- 5月29日 Java性能调优指南 读后感
并行垃圾收集器 串行垃圾收集器 并发标记清除(CMS)垃圾收集器 Garbage First(G1)垃圾收集器 没有深入的学习G1的原理,只是看了大概的思想; SA工具:待学习
- 敏捷开发、DevOps相关书籍——书单
自己瞎整理的一些书单,都是豆瓣评分比较高的书,可以作为选择的一个参考. 书名 豆瓣链接 持续交付:发布可靠软件的系统方法 https://book.douban.com/subject/6862062 ...
- 有奖试读—Windows PowerShell实战指南(第2版)
为什么要学PowerShell? Windows用户都已习惯于使用图形化界面去完成工作,因为GUI总能轻易地实现很多功能,并且不需要记住很多命令.使得短时间学会一种工具成为可能. 但是不幸的是,GUI ...
- [转载]你所不了解的DevOps
DevOps开发运维训练营 一旦建立了创新的文化,即使那些并非科学家或者工程师的人——诗人.演员.记者——也能以团体的形式,接受科学文化的意义.他们信奉创新文化的概念.他们以促进这种文化的方式投票.他 ...
- 给 DevOps 初学者的入门指南
当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念.那么,到底什么是"DevOps"呢? 什么是DevOps 随着软件发布迭代 ...
- CI Weekly #3 | 关于微服务、Docker 实践与 DevOps 指南
CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...
随机推荐
- ansible批量自动安装LNMP
- fiddler抓取https请求
Fiddler抓取https设置详解(图文):https://www.cnblogs.com/joshua317/p/8670923.html Fiddler要抓取到https请求我们还需要Fiddl ...
- Python学习—基础篇之常用模块
常用模块 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...
- 线程和进程PYTHON
基本概念: 计算机一次只能运行一个进程,而一个进程又可以有多个线程,例如百度网盘的上传和下载. 1.线程的创建 .调用threading模块 .创建线程theading.Threads(target ...
- Vue项目碰到"‘webpack-dev-server’不是内部或外部命令,也不是可运行的程序或批处理文件"报错
解决办法: 最后将项目里的“node_modules”文件夹删除,然后在cmd中cd到项目目录,依次运行命令:npm install和npm run build,最后运行npm run dev后项目成 ...
- BigDecimal 类型转换、运算、比较
序:Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的数 ...
- 词根:lun = moon, 表示“月亮”
词根:lun = moon, 表示“月亮” lunar [lun月亮,-ar形容词后缀,…的] 月亮的,太阴的,似月的,新月形的 semilunar [semi-半,lun月亮,-ar形容词后缀,…的 ...
- Ubuntu配置ORB-SLAM2过程中的问题
https://www.imooc.com/article/details/id/29136 1. 提示“CMAKE_CXX_COMPILER-NOTFOUND ” 具体形式: Check for w ...
- css去掉滚动条
.main-layout-side::-webkit-scrollbar { display: none; } 主要代码: ::-webkit-scrollbar {display: none;}
- RDMA RC UC UD
RC:面向连接的可靠服务 UC:面向连接的不可靠服务 UD:面向数据报的不可靠服务 RD:面向非连接(类似UDP)的可靠服务 面向连接 vs 面向数据报 相同点:两者的通信均包括双方QP对的参与 不同 ...