百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

读C#代码整洁之道笔记07_代码评审和集成测试

liebian365 2024-11-17 13:19 21 浏览 0 评论

1.代码评审注意事项

1.1.始终保持代码评审的意识

1.2.保证代码构建成功

1.3.确保所有的测试都是通过的

1.4.注意YAGNI原则

1.5.检查重复代码

1.6.使用静态分析器

1.7.在代码开发完成之后,进入QA部门进行测试之前执行

1.8.小步提交是有效传递信息的方式

1.9.少量的代码比大量的代码更容易评审

1.10.需要审查的代码越多,越容易出现漏网之鱼

1.11.在等待代码审查时,请不要再对代码进行任何更改

2.代码评审人员技能和知识

2.1.技术权威性

2.2.具备良好的软技能

2.3.不要过于挑剔

3.评审内容

3.1.应当仅限于开发人员更改并提交的代码

3.2.公司编码规范与业务需求

3.3.命名规则

3.3.1.命名是否足够长,使人容易阅读和理解

3.3.2.体现代码意图又足够短

3.3.3.评审人必须能够读懂代码

3.4.代码格式

3.5.测试

3.5.1.易于理解并涵盖尽可能多的用例

3.6.性能和安全性

3.6.1.是否存在性能瓶颈

3.6.2.是否能够防范SQL注入或者拒绝服务(Denial-of-Service,DoS)攻击

3.6.3.是否对数据进行了充分的验证以保证数据的清洁

3.6.4.是否只有验证通过的数据才能存储在数据库中

3.6.5.是否检查了用户界面、文档和错误消息中的拼写错误

3.6.6.是否有魔法数字(magic number)或者硬编码的值

3.6.7.配置数据是否正确

3.6.8.是否有意外提交的密钥

3.7.架构规范和设计模式

3.7.1.GoF设计模式

3.7.1.1.Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides

4.设计模式

4.1.创建型

4.1.1.单例设计模式(singleton)

4.1.1.1.确保在应用程序级别只会创建一个实例

4.1.2.工厂方法设计模式(factory method)

4.1.2.1.在不使用具体类的前提下创建对象

4.1.3.抽象工厂设计模式(abstract factory)

4.1.3.1.无须指定具体类而创建一组相关的或者依赖的对象

4.1.4.原型设计模式(prototype)

4.1.4.1.指定要创建的原型的类型来创建原型的副本

4.1.5.建造者设计模式(builder)

4.1.5.1.将对象的创建和对象的表示区分开

4.2.结构型

4.2.1.适配器模式

4.2.1.1.令接口不兼容的类顺畅地协同工作

4.2.2.桥接模式

4.2.2.1.抽象和实现解耦以降低代码的耦合度

4.2.3.组合模式

4.2.3.1.将对象组合并使用统一的方式使用各个对象或对象的组合

4.2.4.装饰器模式

4.2.4.1.在保持接口一致性的同时动态地向对象添加新的功能

4.2.5.外观模式

4.2.5.1.简化庞大的或复杂的接口

4.2.6.享元模式

4.2.6.1.节省内存并在对象之间传递共享数据

4.2.7.代理模式

4.2.7.1.可以截获客户端和API之间的调用

4.3.行为型

4.3.1.职责链模式

4.3.1.1.对象顺序组成一个流水线来处理传入的请求

4.3.2.命令模式

4.3.2.1.将对象某个时间点需要调用方法的所有信息封装起来

4.3.3.解释器模式

4.3.3.1.解释特定语法

4.3.4.迭代器模式

4.3.4.1.用于顺序访问聚合对象的每一个元素而无须暴露对象的内部表示

4.3.5.中介者模式

4.3.5.1.对象通过中介互相通信

4.3.6.备忘录模式

4.3.6.1.捕获并存储对象的状态

4.3.7.观察者模式

4.3.7.1.观察对象,并在被观察对象的状态发生改变时通知观察者

4.3.8.状态模式

4.3.8.1.在状态变化时更改对象行为

4.3.9.策略模式

4.3.9.1.定义了一类可更换的封装算法

4.3.10.模板方法

4.3.10.1.定义了可以在子类中重写的算法及算法中的步骤

4.3.11.访问者模式

4.3.11.1.可以在现有的一组对象中添加新的操作而无须更改这些对象

5.端到端(End-to-end,E2E)系统测试

5.1.集成测试

5.2.工厂方法模式

5.2.1.当类无法确认应该实例化何种类型时

5.2.2.当子类必须指明需要实例化的对象类型时

5.2.3.当类控制其对象的实例化时

5.3.依赖注入(Dependency Injection,DI)

5.3.1.将代码的行为与依赖项分离而产生低耦合的代码

5.3.2.构造器注入

5.3.3.属性/setter注入

5.3.4.方法注入

5.4.模块化

5.4.1.测试模块之间的交互以确保模块之间能够按照预期协同工作

相关推荐

4万多吨豪华游轮遇险 竟是因为这个原因……

(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...

“菜鸟黑客”必用兵器之“渗透测试篇二”

"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...

科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白

作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...

麦子陪你做作业(二):KEGG通路数据库的正确打开姿势

作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...

知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势

智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...

每日新闻播报(September 14)_每日新闻播报英文

AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...

香港新巴城巴开放实时到站数据 供科技界研发使用

中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...

5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper

本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...

Qt动画效果展示_qt显示图片

今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...

如何从0到1设计实现一门自己的脚本语言

作者:dong...

三年级语文上册 仿写句子 需要的直接下载打印吧

描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...

C++|那些一看就很简洁、优雅、经典的小代码段

目录0等概率随机洗牌:1大小写转换2字符串复制...

二年级上册语文必考句子仿写,家长打印,孩子照着练

二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...

一年级语文上 句子专项练习(可打印)

...

亲自上阵!C++ 大佬深度“剧透”:C++26 将如何在代码生成上对抗 Rust?

...

取消回复欢迎 发表评论: