专栏首页恰童鞋骚年代码整洁之道(Clean Code)- 读书笔记

代码整洁之道(Clean Code)- 读书笔记

一、关于Bob大叔的Clean Code

  《代码整洁之道》主要讲述了一系列行之有效的整洁代码操作实践。软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。这本书的阅读对象为一切有志于改善代码质量的程序员,书中介绍的规则均来自作者Bob大叔多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。

  最让我感受深刻的是封面图片和副标题,首先是封面图片:

  上面这张图是M104:草帽星系,其核心是一个质量超大的黑洞,有100万个太阳那么重,环绕着M104的光环就像一顶墨西哥草帽,仿佛经历了大爆炸之后碎片四溅的产物。联系到我们所经历过的没由整洁代码风格各异不可维护的软件项目,其实当你接手时之前的代码都是一个个的黑洞,存在着某天会定时爆发的风险,而当它真正爆发时,接手这个项目的所有人都会因此遭殃。

  其次,再说说副标题:“细节之中自有天地,整洁成就卓越代码”。本书讲述的就是一个又一个的细节之处,不好的处理和好的处理都一一道来,让我们形成整洁的规范。

Robert C. Martin,(Bob大叔)自1970年进入软件行业,从1990年起成为国际软件咨询师。是软件工程领域的大师级人物,是《敏捷软件开发:原则、模式与实践》、《敏捷软件开发:原则、模式与实践(C#版)》(邮电)、《极限编程实践》(邮电)等国内引进的畅销书的作者,其中第一本原著荣获美国《软件开发》第13届震撼(Jolt)大奖,Martin的敏捷系列书是软件工程界的权威书籍。

二、Clean Code精华笔记

文不如表,表不如图,奉上一张思维导图:

三、.NET平台的代码规范插件使用

3.1 StyleCop.Analyzers介绍

  StyleCop.Analyzers是一个开源的代码风格规则的审查项目,其github地址为:https://github.com/DotNetAnalyzers/StyleCopAnalyzers,用于.NET编译器平台的StyleCop分析器,该存储库包含使用.NET编译器平台的StyleCop规则的实现。 在可能的情况下,还会提供代码修复以简化纠正违规的过程。

  它具有以下几个好处:

  • 可以支持 C# 6
  • 使用 Roslyn 解析器,减少了自定义解析器的性能消耗
  • 当你写代码的时候解析器就会运行,当你编译的时候也会运行(不需要再设置 msbuild 任务或者安装任何 vs 插件)

  最近我们团队就采用了StyleCop.Analyzers作为代码审查插件,并将重要的规则设定为了Error级别,即如果你不改正编译不会通过。其实,Resharper也是一款不错的工具,但是因为其收费和重量级的特性,被我放弃了。

3.2 StyleCop.Analyzers安装

  为需要进行代码风格审查的.NET项目Nuget上直接搜索:StyleCop.Analyzers即可,目前最新版本为1.0.2.

3.3 设置规则列表

  这里我分享一个我们团队筛选过后的Ruleset文件(点我下载),它将作为StyleCop.Analyzers的分析基准,我一般将其放在解决方案的Solution Items中,即解决方案层级中(和Dockerfile类似放在项目层级中)

3.4 编辑具体项目的项目文件(csproj)

  为每个需要进行代码风格/规则审查的项目指定需要基准的Ruleset文件:(通过编辑项目文件)

3.5 测试代码风格检查

  写了一些代码之后,编译,查看错误信息窗口:

  可以看到未满足代码规则的点都被检查出来,只有改正之后才可以编译通过。

  最后,再次回顾一下《代码整洁之道》的副标题:

“细节之中自有天地,整洁成就卓越代码”  

参考资料

  Robert C.Martin著,《代码整洁之道》

  soulless,  《C# 代码规范和质量检查工具 StyleCop.Analyzers

  DotNetAnalyzers,《Using StyleCop Analyzers with .NET Core

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 操作系统核心原理-1.操作系统导论

    PS:操作系统原理是大学计算机专业最为重要的一门专业基础课程之一,对于操作系统核心原理的理解对于一个合格的程序员来说十分重要,于是我继续我的“三大原理,两个协议...

    Edison Zhou
  • 你可能不知道的Docker资源限制

      默认情况下,容器是没有资源限制的,它会尽可能地使用宿主机能够分配给它的资源。Docker提供了一种控制分配多少量的内存、CPU或阻塞I/O给一个容器的方式,...

    Edison Zhou
  • 《T-SQL查询》读书笔记Part 3.索引的基本知识

    索引优化是查询优化中最重要的一部分,索引是一种用于排序和搜索的结构,在查找数据时索引可以减少对I/O的需要;当计划中的某些元素需要或是可以利用经过排序的数据时,...

    Edison Zhou
  • 如何成为一名卓越的前端工程师

    译注:本文翻译自谷歌工程师 Philip Walton 的一篇博客。看过之后非常有感触,很多观点都是自己长期非常坚持和认同的,所以翻译出来分享给更多的前端同学!

    IMWeb前端团队
  • 使用Sqoop从MySQL导入数据

    --last-value <largest_column_num> 检查的列中的上一个导入的值

    ZHANGHAO
  • MySQL数据类型 -- 日期时间型

    版权声明:本文为博主原创文章,欢迎扩散,扩散请务必注明出处。 https://blog.csdn.net/robinson_0612/art...

    Leshami
  • LG与E-mart合作开发新型服务机器人

    你的杂货店需要帮助吗?在未来,机器人可能会伸出援助之手。今天,电子巨头LG宣布与韩国零售连锁店E-mart建立合作伙伴关系,开发一种“新型服务机器人”,可以为顾...

    AiTechYun
  • 交互式线上科学期刊Distill上线,Ian Goodfellow表示“学ML就找它”

    如今,机器学习的发展正如火如荼,每天都有众多最新研究论文在线上发表。论文不仅承担了分享研究成果的责任,同时,也表达了科学家们对事物的不同理解。 为了更好地让机器...

    AI研习社
  • 时隔一年多,东芝于昨日正式完成芯片出售业务 | 热点

    镁客网
  • 手把手教你搭建Jenkins实现自动化部署Jar

    java_home地址可以用echo $JAVA_HOME 输出 (前提是/etc/profile有export)

    beifengtz

扫码关注云+社区

领取腾讯云代金券