首页 > 编程语言 >C#代码整洁之道读后总结与感想

C#代码整洁之道读后总结与感想

时间:2023-01-16 09:00:41浏览次数:51  
标签:C# 代码 感想 笔记 之道 参数 读后 整洁

1. 基本信息

C#代码整洁之道:代码重构与性能提升 ,英文名为Clean Code in C#。

作者:[英] 詹森·奥尔斯(Jason Alls) 著,刘夏 译

机械工业出版社,2022年4月出版。

1.1. 读薄率

书籍总字数489000字,笔记总字数8927字。

读薄率 8927÷489000≈1.83%

1.2. 读厚方向

1.2.1. 函数编程

  • Functional C#

  • Functional Programming in C#

  • JavaScript: Functional Programming for JavaScript Developers

  • Learning Java Functional Programming

1.2.2. 设计模式

  • Hands-On Design Patterns with Java

  • Spring 5 Design Patterns

1.2.3. TDD、BDD

  • 测试驱动开发 [美]Kent Beck 著

和原文的推荐书籍不一样,读厚方向只是我感兴趣的,原文每个章节都有推荐书籍,更多、更详细。

1.3. 笔记--章节对应关系

笔记 章节
读C#代码整洁之道笔记01 第01章 C#的编码标准和原则
读C#代码整洁之道笔记02 第03章 类、对象和数据结构
第04章 编写整洁的函数
读C#代码整洁之道笔记03 第11章 处理切面关注点
第05章 异常处理
第08章 线程与并发
读C#代码整洁之道笔记04 第13章 重构C#代码——识别代码坏味道
读C#代码整洁之道笔记05 第12章 使用工具改善代码质量
第06章 单元测试
读C#代码整洁之道笔记06 第09章 API的设计与开发
第10章 使用API密钥和Azure Key Vault保护API
读C#代码整洁之道笔记07 第02章 代码评审——过程及其重要性
第14章 重构C#代码——实现设计模式
第07章 端到端系统测试

2. 亮点

2.1. 4~10行方法

方法不宜超过4行,不应超过10行。4行方法,一目了然,强制倒逼自己思考这个方法是否承担了过多的责任,能否选择更合适的模式实现

2.2. 参数不多于2个

  • 列表中有很多out参数,则重构方法返回元组或对象

  • 对于方法的参数,请使用参数对象替换长的参数列表

  • 柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术

2.3. 确保所有对象的继承深度不大于1

  • 扁平化

  • 不会创建出非常深的类层次

    • 一个对象的多个状态和方法可能来自层次结构中的不同级别,导致代码更难理解

2.4. 圈复杂度降低到10以内

  • if/switch等条件语句的处理

  • 循环处理

    • 采用Lamdba

以上的量化指标,简单明了,在编码实践中,如果能够贯彻执行,相信对于提升编码水平一定是大有裨益。

3. 感想

3.1. 语言无关性

尽管这本书是写C#的,除了一些语法特性外,大部分建议都是语言无关的。

3.2. 笔记的益处

倒逼自己一本书至少要过3遍。1遍通读+勾画、2遍导图+笔记、3遍去粗取精+修订完善,如果算上这篇的总结和感想,那就是4遍了。

这使得自己查漏补缺,加深了认识和记忆。

3.3. 要不要读原文

有时间、有精力的情况下,当然是要去读原文咯。

毕竟各人知识背景不一样,我觉得重要的地方,你不一定觉得,相反, 我觉得不重要的,也许你觉得就是亮点。

更何况,原文有图有代码示例,更能加深印象和认识。

标签:C#,代码,感想,笔记,之道,参数,读后,整洁
From: https://www.cnblogs.com/lying7/p/17054663.html

相关文章

  • ssh config 跳板机可以直接跳过
    核心ProxyCommandHostgatewayHostName$GATEWAY_HOSTPort$GATEWAY_PORTIdentityFile~/.ssh/id_rsaUser$GATEWAY_USERHosttargetHostNam......
  • Command line is too long. Shorten command line for TestMain or also for Applicat
       idea运行项目报错:Commandlineistoolong.ShortencommandlineforTestMainoralsoforApplicationdefault configuration.解决方法如下:   ......
  • BUUCTF LSB
    这个图片我们尝试用以上的办法,查看属性,发现无flag!那我们就打开StegSolve.jar包抓取!    然后点左上角的:Analyse->DataExtract调整至如下,发现这是一张图片,Sav......
  • BUUCTF 文件中的秘密
    小明经常喜欢在文件中藏一些秘密。时间久了便忘记了,你能帮小明找到该文件中的秘密吗?注意:得到的flag请包上flag{}提交 这题真的震惊我一百年!!!我真的会谢,直接查看属......
  • Oracle Rman archivelog
    0x00Rman的归档日志管理   archivelog的相关信息是记录在controlfile中的,当物理删除后不会改变controlfile的设置。并且在查询相关的动态视图(例如v$archived_log)时......
  • [LeetCode] 1813. Sentence Similarity III
    Asentenceisalistofwordsthatareseparatedbyasinglespacewithnoleadingortrailingspaces.Forexample, "HelloWorld", "HELLO", "helloworldhel......
  • ifc 基本概念
    基本概念和假设该规范包括定义数据类型的模式,以及指示数据类型在特定场景中的使用的常见概念。本章定义了此类通用概念,适用于具有特定用途的实体。这样的概念也构成了模型......
  • loading OpenAPI spec for v1beta1.metrics.k8s.io failed with: failed to retrieve
    安装metrics-server一直无法正常使用,日志报这个loadingOpenAPIspecforv1beta1.metrics.k8s.iofailedwith:failedtoretrieveopenAPIspec,httperror:Respon......
  • [个人训练]-Codeforces Round #842 (Div. 2)-A~F
    前几天vp的一场,前面的题相对水一点,干脆倒着写题解~题目链接:https://codeforces.com/contest/1768目录F.WonderfulJumpE.PartialSortingD.LuckyPermutationC.Eleme......
  • Build mock APIs in seconds All In One
    BuildmockAPIsinsecondsAllInOne如何在几秒钟内快速的构建出一个线上可以使用的测试APIBeeceptorRest/SOAPAPIMocking,HTTPDebugger&Proxy-RestAPI......