本书作者Joost Visser,译者张若飞。本书讲解了编写可维护代码的10个要则,从目录就可以看出这10点分别是:

  1. 编写短小的代码单元(15行以内,在大部分情况下还是能实现的,但是当我们使用Linq或者使用对象初始化器代码一下子就超过15行了,这点要则还是有些苛刻的)
  2. 编写简单的代码单元(分支不超过4个,这个还是很值得学习的)
  3. 不写重复代码(代码重用是很重要的技巧,然而现在大部分项目追求快速迭代,把每个功能都当成独立的来进行设计,导致很多相似重复的代码,留下了很多的技术债务)
  4. 保持代码单元的接口简单(参数不超过4个或者提取成对象,很实用的技巧)
  5. 分离模块之间的关注点(避免形成大型模块,以便能达到模块之间的松耦合,分离关注点隐藏具体实现)
  6. 架构组件松耦合(顶层组件之间应该做到松耦合,减少暴露细节)
  7. 保持架构组件之间的平衡(平衡代码中顶层组件的数量和体积,组件数量在6-12之间并且体积基本一致)
  8. 保持小规模代码库(代码规模尽量小,控制增长并主动减少代码体积)
  9. 自动化开发部署和测试(通过使用自动化框架来进行自动化测试)
  10. 编写简洁的代码

  可以说本书的大部分要则都相当适用,并且作者也提供了大量的代码示例以及重构技巧,足见作者经验丰富,且在写作时下了一番功夫,这是一本非常好的书。

  我觉得编程是一门艺术,代码是艺术的表现,掌握技术固然很重要,但是编码技巧比技术更重要,古人云:“工欲善其事,必先利其器。”。

  我反对编写让人难以理解的代码,代码难以理解势必难以维护,而且这几年互联网得到了急速的发展,以前几个月甚至几年才能达到的数据量级,现在一个月甚至一周就能达到,项目的规模也越来越大,已经不再是那种一个人就能控制得了的,只有团队之间的相互协作才能更好的完成项目。那么编写简洁明了(优秀)的代码就至关重要了,它能让团队其他的成员能更好的理解代码的意图,不管是修复代码还是扩展功能都能更快上手。而想要编写优秀的代码就需要多写代码,观察代码之间的关联,使用面向对象或者模式思想进行重构,并且时常阅读其他人的代码,从别人的代码中学习优秀的编码技巧,通过自身的努力提升自己的水平,才能让编码技艺更加纯熟。

《代码不朽:编写可维护软件的10大要则(C#版)》读后感的更多相关文章

  1. 《DevOps软件架构师行动指南》读后感

    从软件架构师视角讲解了引入DevOps实践所需要拥有的技术能力,涵盖运维.部署流水线.监控.安全与审计以及质量关注,这是本书一开始内容简介的开头,本书的作者是伦恩·拜斯(Len Bass).英戈·韦伯 ...

  2. nodejs开发指南读后感

    nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...

  3. DevOps:软件架构师行动指南(文摘)

    第一部分 背景 第1章 DevOps是什么 第二部分 部署流水线 第三部分 横切关注点 第四部分 案例研究 第五部分 走向未来

  4. 2020年DevOps工程师入门指南

    DevOps兴起于2010年代,到现在DevOps已经在行业中拥有了一席之地,并在继续发展壮大. 有兴趣成为一名DevOps工程师吗?如果想要成为一名DevOps工程师,需要做到以下五点: 要有开发者 ...

  5. 5月29日 Java性能调优指南 读后感

    并行垃圾收集器 串行垃圾收集器 并发标记清除(CMS)垃圾收集器 Garbage First(G1)垃圾收集器 没有深入的学习G1的原理,只是看了大概的思想; SA工具:待学习

  6. 敏捷开发、DevOps相关书籍——书单

    自己瞎整理的一些书单,都是豆瓣评分比较高的书,可以作为选择的一个参考. 书名 豆瓣链接 持续交付:发布可靠软件的系统方法 https://book.douban.com/subject/6862062 ...

  7. 有奖试读—Windows PowerShell实战指南(第2版)

    为什么要学PowerShell? Windows用户都已习惯于使用图形化界面去完成工作,因为GUI总能轻易地实现很多功能,并且不需要记住很多命令.使得短时间学会一种工具成为可能. 但是不幸的是,GUI ...

  8. [转载]你所不了解的DevOps

    DevOps开发运维训练营 一旦建立了创新的文化,即使那些并非科学家或者工程师的人——诗人.演员.记者——也能以团体的形式,接受科学文化的意义.他们信奉创新文化的概念.他们以促进这种文化的方式投票.他 ...

  9. 给 DevOps 初学者的入门指南

    当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念.那么,到底什么是"DevOps"呢? 什么是DevOps 随着软件发布迭代 ...

  10. CI Weekly #3 | 关于微服务、Docker 实践与 DevOps 指南

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

随机推荐

  1. ASP.NET Easyui datagrid增删改+sqlhelper

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjAAAAFxCAYAAABtHZI7AAAgAElEQVR4nOy9DXwU1b3//wmCYHjUPl

  2. heat-engine组件

    1.heat-engine启动一个rpc server端,EngineService在初始化时加载heat.clients插件和初始化env, env中包括各种资源关键字对应的映射类和constrai ...

  3. phpstorm中open in browser端口和路径设置

    phpstorm默认的端口号是:63342但是我装的apache服务器的默认端口是80网上查找资料,都说可以加listen的端口,比如这里 #Listen 12.34.56.78:80Listen 8 ...

  4. 分布式系统里session同步

    https://blog.csdn.net/xyw591238/article/details/51644315

  5. Juniper BGP配置

    网络拓扑如下: XRV1配置 =========================================================== root@XRV1# run show confi ...

  6. P3865 【模板】ST表

    P3865 [模板]ST表 https://www.luogu.org/problemnew/show/P3865 题目背景 这是一道ST表经典题——静态区间最大值 请注意最大数据时限只有0.8s,数 ...

  7. 递归可视化之汉诺塔的动画实现(turtle海龟)

    import turtle class Stack: def __init__(self): self.items = [] def isEmpty(self): def push(self, ite ...

  8. 前后端分离框架前端react,后端springboot跨域问题分析

    前后端分离框架前端react,后端springboot跨域问题分析 为啥跨域了 前端react的设置 springboot后端设置 为啥跨域了 由于前后端不在一个端口上,也是属于跨域问题的一种,所以必 ...

  9. EventEmitter事件处理器中的this问题

    JavaScript中的this是一个比较绕的问题,有非常非常多的文章在讲这件事,这里推荐一篇文章,看了这篇文章基本上就能弄明白了. 这篇文章讲了关于this的一个基本原则: 包含this的Funct ...

  10. js学习之原生js实现懒加载

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...