首页 > 其他分享 >《代码大全》阅读笔记03

《代码大全》阅读笔记03

时间:2023-10-24 15:44:33浏览次数:29  
标签:03 错误 代码 笔记 参数 内聚性 异常 子程序 大全

第五章:软件构建中的设计 1、软件的首要技术使命就是管理复杂度,以简单性作为努力目标的标记方案对此最有帮助。 2、好的设计是迭代的,你尝试设计的越多,你的最终方案就会约好。 3、隐藏实现、封装变化。   第六章:可以工作的类 1、类的接口应该提供一致的抽象。很多问题都是由于违背该原则而引起的。 2、类的接口应该隐藏一些信息,如某个系统接口、某项设计决策、或一些实现细节。 3、包含(组合、聚合)往往比继承更可取,除非是要对一个“is a”的关系建模。 4、限制继承的层次,继承是一种有用的工具,但它却会增加复杂度,这有违软件的首要使命-管理负责度。 5、类是管理复杂度的首先工具。要在设计类时给予足够的关注,才能实现这一目标。 6、尽量减小类和类之间相互合作的范围,让以下几个数字最小:         ①所实例化的对象的种类;         ②在被实例化对象上直接调用的不同子程序的数量;         ③调用的“通过其他对象返回的”对象的子程序的数量;(A通过调用B的返回值C来调用C的方法,)   第七章:高质量的子程序 1、为什么要创建子程序?         提高程序的可读性,减少以及隔离程序复杂度,提高代码复用率,在代码变更时减少带来的影响(功能变更,变更导致的测试),可移植性,方便后期优化,隐藏复杂逻辑结构等的实现细节...... 2、如何设计子程序?         保证子程序功能的内聚性,既一个子程序只完成一个功能。避免其它的内聚性,比如逻辑上的内聚性,顺序上的内聚性等。 3、什么是好的子程序名字?         能够描述子程序所做的事情,使用动宾结构,并且对返回值有所描述,比如checkOrderInfo,使用对仗词(比如get/set,create/destroy),一般命名长度为9~15个,在一个项目里最好给一些通用的操作确立命名规则(比如创建、更新记录时),避免模糊命名(比如detail); 4、子程序可以多长?         考虑事项:子程序的功能的内聚性,嵌套的层次,变量的数量,决策点的数量等;         研究表明应该一般不超过200行, 5、如何使用子程序参数?         按照输入、修改、输出的顺序排列参数;         如果几个程序都用了类似的一些参数,应该让这些参数的排练顺序保持一致;         不要把子程序的输入参数用作工作变量,工作变量最好在子程序中创建,保证参数尽量不被改变;         把子程序的参数个数限制在大约7个以内,且保证每一个参数都被用到;         为子程序传递用以维持其借口抽象的变量或对象,传递给子程序什么类型的参数,应该为对子程序而言,哪种方式对子程序更方便;                 第八章:防御式编程 1、什么是防御式编程?为什么需要?         防御式编程不是指不让别人批评你的代码,而是指确保你要承担的责任,保证你的方法不会因为传入错误数据而破坏,看似微小的防范,收益可能大于你的想象,能够让错误更容易发现,修改,并减少对已经编写代码的修改 2、如何使用防御式编程?         在开发阶段,建议不从产品角度考虑,建议让错误暴露的越明显越好,能更快的排查错误;在产品上线时,防御式编程的代码可能影响性能以及体验,需要适当修改,但是需要根据场景考虑,比如银行设备以及普通网站,不同产品,错误处理方式不一样;         隔离程序与参数,即对参数进行验证,使之能包容错误造成的损害,并进行适当处理; 3、如何对错误进行处理?处理的方式         需要根据实际场景,程序是更需要健壮性还是正确性,一般普通的消费产品更倾向于健壮性,但和数据相关,则更倾向于正确性;建议在架构设计上就决定好如何处理错误,是异常还是其他的方式。 4、关于异常         避免在构造和析构函数中使用异常;考虑创建一个集中的方式处理异常,能够为一些与异常有关的信息提供集中的存储;把项目中对异常的使用标准化,考虑创建抛出异常的基类,这样就能把记录日志、报告错误等操作集中起来并标准化;不滥用异常,应该在异常和其他错误处理手段进行权衡,如果某些错误能局部处理,那就局部处理它;

标签:03,错误,代码,笔记,参数,内聚性,异常,子程序,大全
From: https://www.cnblogs.com/2351920019xin/p/17784956.html

相关文章

  • 有道云笔记之备选方案Obsidian和Notion
    有道云笔记限制登录设备在商业项目中一般都会有plana、planb,对于云笔记,我也在寻找planb,有道云笔记在国内市场已经占据了很大的份额。同类型中的就不再去挑选了,我觉得商业软件,迟早也会走到有道云笔记这一步的,早在很多年前就目睹了为知笔记收费迁移到有道云笔记。在知乎上看到很多推......
  • 学习笔记430—fMRI数据处理
    产生的一系列文件中:https://www.bilibili.com/video/BV1U5411s7kg?p=3  严老师视频(1)头动矫正 其中FD_Jenkinson最好  下面这个是很早以前用来排除被试的,现在不用了,现在都用meanFD排除  HeadMotion.tsv:显示最大或平均头动,meanFD,...一般使用meanFD后面做统计......
  • LocalDateTime、LocalDate、Date、String相互转化大全及其注意事项
    一、前言大家在开发过程中必不可少的和日期打交道,对接别的系统时,时间日期格式不一致,每次都要转化!每次写完就忘记了,小编专门来整理一篇来详细说一下他们四个的转换的方法,方便后面使用!!二、LocalDateTime、LocalDate、Date三者联系这里先说一下,为什么日期有Date了,还在JDK8中推出......
  • Redis深度历险 核心原理与应用实践-笔记
     1.2.25种基础数据结构string(字符串)字符串string是Redis最简单的数据结构,其内部表示就是一个字符数组。Redis所有的数据结构都是以唯一的key字符串作为名称,然后通过这唯一的key来获取相应的value数据。不同类型的数据结构差异就在于value的结果不一样。Redis的字符串是动......
  • CH32X035 模拟IIC驱动EEPROM
    在CH32X035的GPIO模式配置选项中,并没有开漏输出的配置模式,如下图。在使用GPIO模拟IIC时,可在初始化时将其配置成推挽输出模式,在需要时切换对应的输入输出模式,以下是CH32X035GPIO模拟IIC的实现例程。 具体程序代码如下:iic.h文件:#ifndef__IIC_H#define__IIC_H#include"c......
  • CH32X035 模拟IIC驱动EEPROM
    来源:https://www.cnblogs.com/liaigu/p/17784027.html在CH32X035的GPIO模式配置选项中,并没有开漏输出的配置模式,如下图。在使用GPIO模拟IIC时,可在初始化时将其配置成推挽输出模式,在需要时切换对应的输入输出模式,以下是CH32X035GPIO模拟IIC的实现例程。 具体程序代码如下:iic.......
  • 阅读笔记 2: 重构的实际应用
    第6章介绍了如何重新组织数据,这是一个常见的重构任务。作者详细讨论了数据类和数据结构的不同,以及如何选择合适的数据组织方式以改善代码质量。在本章中,福勒讲述了一些具体的数据重构技巧,如封装字段(EncapsulateField)、以及如何将数据类的职责划分得更加清晰。他提到了代码中的数......
  • 《需求分析与系统设计》阅读笔记1
    《需求分析与系统设计》首先强调,理解这本书的核心在于认识到需求分析与系统设计是一门应用性知识,阅读虽然重要,但更为关键的是通过错误的实践、错误分析,并尽力避免未来可能出现的错误。第一章着重探讨了导致软件失败的原因,以及问题出现时应采取的解决方法。这部分的内容被认为尤......
  • 之前笔记全记本子上了,一直也没整理……
    JavaScript自定义对象定义格式:var对象名={属性名(变量名)1:属性值1,    …………     …………函数名称(方法名):function(形参列表){}};eat;function(){alert("吃");}......
  • uboot配置usbhost及代码初步分析--Apple的学习笔记
    一,前言之前uboot没配置过usb,但是现在uboot基于DM模型基本和linuxdriver类似了。那么为了学习linuxdriver,我可以先学习uboot来做技术储备也是一样的。而且usb在uboot上应该也有用武之地,所以有必要进行刻意练习。二,分析1,之前对发现driver用了wraper的方式来打包进行绑定,我理解唯一......