[Day 06] 一个单元测试的题目-闰年的判断

过了这麽多天,
我们终於进入到主题了,
这一次我们使用的题目,
是输入一个正整数(西元年),
然後判断这一年是不是闰年,

到底为什麽会有闰年呢?
我们计算一天的时间,
是地球自转一圈的时间,
然後所谓的一年,
就是地球绕太阳一圈的时间,
但是其实这个时间是有误差的,
之前的历法所订的一年是365天,
但是其实地球绕太阳一圈的时间是365.25天,
所以就会形成所谓的闰年,
也就是需要校正回归。

以前以为闰年的计算很简单,
反正就是三年平年就会有一年闰年,
不过我们来看 维基百科 的说明
其实每100年还可能会遇到一个平年,
这是因为365.25天也不是很准确,
所以需要再一次的校正回归,
当然因为一般来说我们这辈子最多只会遇到一次刚好满百年,
所以这个定义对我们来说其实影响很小,
日常生活只要记得四年会遇到一个闰年就好了。

所以实际上的闰年是这样子判断的(维基百科):

  • 公元年分非4的倍数,为平年。
  • 公元年分为4的倍数但非100的倍数,为闰年。
  • 公元年分为100的倍数但非400的倍数,为平年。
  • 公元年分为400的倍数为闰年。

这就是我们对闰年的定义,
了解了闰年的定义之後,
我们才有办法来判断闰年。

然後当我们有了一个需求之後,
第一件事不是先去写程序解决它,
因为通常这个需求可能会很复杂,
(当然我们这个例子相对来说单纯很多)
所以首先我们要先把需求拆开来,
把一个大需求拆成很多小需求,
然後每个小需求都完成,
理论上这个大需求也应该完成了。
(对,理论上,因为凡事总有例外)

我们这次写的测试驱动开发(TDD)也是这样,
我们不会一次完成所有的判断,
而是一步一步增加功能,
直到最後完成所有的功能,
并且进行重构。

所以我们先将需求拆解成这样,
为了要判断闰年,
我们的程序是这样判断的:

  1. 如果是4的倍数,那就是闰年
  2. 如果是100的倍数,那就是平年
  3. 如果是400的倍数,那就是闰年
  4. 其他都是平年

完成了分析之後,
我们就可以开始撰写我们的程序了。


<<:  Day 2:根基不牢,怎麽建高楼.来聊聊架构.

>>:  [Day 02] 建立 Kotlin 专案

Powershell 入门之循环(下)

昨天我们看了 for(foreach) 循环,今天我们来看看 while 循环。 while 的语法...

[第26天]理财达人Mx. Ada-OBV指标

前言 本文说明使用TA-Lib函式库计算OBV指标。 OBV指标 OBV能量潮指标(On Balan...

15 修bug兼整理

好拉 昨天算是一个里程碑, 游戏的核心也快完成了。 来修复一下 可以出手牌没有的牌的 bug 先把 ...

Day 29:案例探讨1 - Use Cases (Bayer/Adobe/IEEE)

看了ElasticSearch的成功案例,说实在的,30天的确只有了解ElasticSearch平台...

JAVA - JAVA Log4j 专门用於 Java 语言的日志记录工具

JAVA - JAVA Log4j 专门用於 Java 语言的日志记录工具 参考资料 参考资料1:L...