首页 > 其他分享 >代码整洁之道:边界、单元测试、类

代码整洁之道:边界、单元测试、类

时间:2023-12-29 13:44:35浏览次数:28  
标签:变量 权责 代码 单元测试 之道 测试 应该 整洁

来源:博客园(作者-BNDong

边界

  • 边界上的代码需要清晰的分割和定义了期望的测试。应该避免我们的代码过多地了解第三方代码中的特定信息。依靠你能控制的东西,好过依靠你控制不了的东西,免得日后受它控制。

单元测试

TDD三定律

  • 在编写不能通过的单元测试前,不可编写生成代码
  • 只可编写刚好无法通过的单元测试,不能编译也算不通过
  • 只可编写刚好通过当前失败测试的生产代码

保持测试整洁

  • 测试代码和生产代码一样重要。它可不是二等公民。它需要被思考、被设计和被照料,它该像生产代码一般保持整洁。
  • 没有了测试,你就会失去保证生产代码可扩展的一切要素。(现在除了真正的大项目很少做单元测试了,需求都加班搞,没有时间编写代码量不低的测试代码。特别是一些不懂技术的项目经理,只要看到功能就OK,才不管你是怎么实现的)

整洁的测试

  • 在单元测试中,可读性甚至比在生产代码中还重要。测试如何才能做到可读?和其他代码中一样:明确,简介,还有足够的表达力。在测试中,你要以尽可能少的文字表达大量内容。

面向特定领域的测试语言

双重标准

  • 测试代码应当简单、精悍、足具表达力,但它该和生产代码一般有效。毕竟它是在测试环境而非生产环境中运行,这两种环境有着截然不同的需求。

每个测试一个断言

  • (很是头大的要求...)

F.I.R.S.T.

  • 快速(Fast) 测试应该够快。
  • 独立(Independent) 测试应该相互独立。某个测试不应为下一个测试设定条件。
  • 可重复(Repeatable) 测试应当可在任何环境中重复通过。
  • 自足验证(Self-Validating) 测试应该有布尔值输出。无论是通过或失败,你不应该查看日志文件来确认测试是否通过。
  • 及时(Timely) 测试应及时编写。单元测试应该恰好在使其通过的生产

类的组织

  • 遵循标准的Java约定,类应该从一组变量列表开始。如果有公共静态常量,应该先出现。然后是私有静态变量,以及私有实体变量。很少会有公共变量。
  • 公共函数应跟在变量列表之后。我们喜欢把由某个公共函数调用的私有工具函数紧随在该公共函数后面。这符合了自顶向下原则,让程序读起来就像一片报纸文章。

类应该短小

  • 关于类的第一条规则是类应该短小。第二条规则是还要更短小。
  • 类的名称应当描述其权责。实际上,命名正是帮助判断类的长度的第一个手段。如果无法为某个类命以精确的名称,这个类大概就太长了。类名越含混,该类越有可能拥有过多权责。

单一权责原则

  • 类或模块应有且只有一条加以修改的理由。该原则既给出了权责的定义,又是关于类的长度的指导方针。类应有一个权责——只有一条修改的理由。
  • 系统应该由许多短小的类而不是少量巨大的类组成。每个小类封装一个权责,只有一个修改的原因,并与少数其他类一起协同达成期望的系统行为。

内聚

  • 类应该只有少量实体变量。类中的每个方法都应该操作一个或多个这种变量。通常而言,方法操作的变量越多,就越黏聚到类上。如果一个类中的每个变量都被每个方法所使用,则该类具有最大的内聚性。

保持内聚性就会得到许多短小的类

  • 当类丧失了内聚性,就拆分它!

为了修改而组织

  • 对于多数系统,修改将一直持续。每处修改都让我们冒着系统其他部分不能如期望般工作的风险。在整洁的系统中,我们对类加以组织,以降低修改的风险。

标签:变量,权责,代码,单元测试,之道,测试,应该,整洁
From: https://www.cnblogs.com/mharvay/p/17903745.html

相关文章

  • 《程序员的修炼之道》第三章读书笔记
    第3章基本工具中,包含了一些常用的工具和技巧,可以提高我们的工作效率和代码质量。以下是这些小节的简要介绍:14.纯文本的威力:纯文本是一种通用的文件格式,它在各种场景中都非常有用。本节介绍了一些处理纯文本的强大工具和技术,比如正则表达式、grep、sed等。15.shell游戏:shell是......
  • 痞子衡嵌入式:简析i.MXRT1170 MECC64功能特点及其保护片内OCRAM1,2之道
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是i.MXRT1170MECC64功能特点及其保护片内OCRAM1,2之道。ECC是“ErrorCorrectingCode”的简写,ECC能够实现错误检查和纠正,含有ECC功能的内存一般称为ECC内存,使用了ECC内存的系统在稳定性和可靠性......
  • java单元测试
    一、单元测试1、概述 2、优缺点 二、快速入门   三、JUNIT的常用注解 ......
  • 泛互联网行业A/B测试全解析:产品优化的创新之道
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群近期,火山引擎数智平台举办了“超话数据:企业产品优化分享”的活动。火山引擎产品解决方案专家从企业应用的视角,分享了A/B实验在产品全用户生命周期的体验优化和案例。在用户拉新环节,企业可以通过广......
  • 泛互联网行业A/B测试全解析:产品优化的创新之道
     更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近期,火山引擎数智平台举办了“超话数据:企业产品优化分享”的活动。火山引擎产品解决方案专家从企业应用的视角,分享了A/B实验在产品全用户生命周期的体验优化和案例。在用户拉新环节,企......
  • 处理HTTP错误响应:Go语言中的稳健之道
    开场白:在Web开发中,HTTP错误响应是不可避免的一部分。当请求无法成功完成时,服务器会返回一个错误响应。今天,我们将深入探讨如何在Go语言中优雅地处理这些HTTP错误响应。知识点一:HTTP错误响应的常见类型HTTP错误响应通常由状态码和相应的消息组成。常见的状态码包括:404(未找到)、500(内......
  • 代码整洁之道:格式、对象和数据结构、错误处理
    来源:博客园(作者-BNDong)格式格式目的代码格式不可忽略,必须严肃对待。代码格式关乎沟通,而沟通是专业开发者的头等大事。(每种语言基本都有它自己的推荐标准,比如PHP的PSR代码规范,对格式做了详细的定义)垂直格式单文件。书中的建议是,单文件的代码量不易过大。短文件通常比长......
  • 《简约之美 软件设计之道》读后感二
    第四章未来软件设计师面对的主要问题是:在设计软件时,应该做怎样的决定?面对的众多可能,哪一个才是最好的。不要绝对好坏,而是哪些更好,是个排序问题,我们要做的是从所有可能中选出最好的决定。比如,眼前功能100项,但我们的人力只能够完成2项。应该选哪2项呢?软件设计的方程式:上面的问题,......
  • 事件时间日志,精准工作之道
    你好,我是刚哥。事件时间日志,是在李笑来《把时间当做朋友》中看到的,来源于柳比歇夫的日志,Event-timeLog。事件日志只记录事件的名称,而事件时间日志还记录了时间,比如:给斯拉瓦写信——二小时四十五分。李笑来在书中谈到了事件时间日志的好处:“它会使你对时间的感觉越来越精确。可......
  • AspNetCore的单元测试
    一、单元测试项目如何创建VisualStudio新建项目,项目类型选择测试。 可以看到有许多选项,都大差不差。这里选择xUnit。项目名使用要测试的项目名加上“.Tests”后缀。二、进行单元测试首先明确测试对象,通常是针对一个类型进行测试,新建Test类,类名为测试对象的类名加上“Test......