精益研发程序员码农的世界

易数编程之梅花1弄

2017-03-29  本文已影响201人  总有骄阳

《梅花易数》

一物从来有一身,一身还有一乾坤。

能知万物备于我,肯把三才别立根。

天向一中分造化,人于心上起经纶。

仙人亦有两般话,道不虚传只在人。

最近在看《梅花易数》,它有简单的算数和推理,比较适合用程序表达出来。

另外,它还有很多经典的案例,可以作为程序验证的实例,是行为驱动开发天然的输入。

梅花易数、行为驱动开发,这两个结合起来会产生什么样的效果,我们拭目以待。

一、梅花易数

《梅花易数》是中国古代占卜法之一。现在的八卦象数、梅花心易都是梅花易数的别称。相传为宋代易学家邵雍所著,是一部以易学中的数学为基础,结合易学中的“象学”进行占卜的书,相传邵雍运用时每卦必中,屡试不爽。梅花易数依先天八卦数理,即乾一,兑二,离三,震四,巽五,坎六,艮七,坤八,随时随地皆可起卦,取卦方式多种多样。

二、行为驱动开发(BDD)

BDD 作为一种设计方法,可以有效的改善设计,并在系统的演化过程中为团队指明前进方向。[1]

行为驱动开发的根基是一种“通用语言”。这种通用语言同时被客户和开发者用来定义系统的行为。由于客户和开发者使用同一种“语言”来描述同一个系统,可以最大程度避免表达不一致带来的问题。表达不一致是软件开发中最常见的问题,由此造成的结果就是开发人员最终做出来的东西就不是客户期望的。使用通用语言,客户和开发者可以一起定义出系统的行为,从而做出符合客户需求的设计。但如果光有设计,而没有验证的手段,就无法检验我们的实现是不是符合设计。所以 BDD还是要和测试结合在一起,用系统行为的定义来验证实现代码。

行为驱动开发是测试驱动开发的进化,但关注的核心是设计。行为驱动开发中,定义系统的行为是主要工作,而对系统行为的描述则变成了测试标准。在行为驱动开发中,我们需要使用通用语言来定义系统行为。

三、环境准备

1、java jdk

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

2、IntelliJ IDEA

http://www.jetbrains.com.cn/idea.html

安装社区版即可,安装完成后,别忘了装上cucumber插件。

Cucumber插件

四、行为驱动开发

1、起卦法:年月日时起卦

即以农历之年月日总和除以八,以余数为卦数求上卦;以年月日时总和除以八,以余数为卦数求下卦,再以年月日时总和除以六,以余数为动爻。

例:农历壬申年四月十一日巳时起卦:申年9数,巳时6数。

上卦为:(年+月+日)÷8,取余数。 即:(9+4+11)÷8,此处无余数。

下卦为:(年+月+日+时)÷8,取余数。 即:(9+4+11+6)÷8,余数为7为艮卦。

动爻数为:(年+月+日+时)÷6,取余数。 即:(9+4+11+6)除以6,此处无余数。

此卦为:上卦为坤,下卦为艮,动爻为上爻。

2、实例:观梅占

年月日时起卦实例,观梅占,这是我们行为驱动的第一个场景。

辰年十二月十七日申时,康节先生偶观梅,见二雀争枝坠地。先生曰:“不动不占,不因事不占。今二雀争枝坠地,怪也。”因占之,辰年五数,十二月十二数,十七日十七数,共三十四数,除四八三十二,余二,属兑,为上卦,加申时九数,总得四十三数,五八除四十,余得三数,为离,作下卦。又上下总四十三数,以六除,六七四十二,余一为动爻,是为泽火革。初爻变咸,互见乾巽。

断之曰:“详此卦,明晚当有女子折花,园丁不知而逐之,女子失惊坠地,逐伤其股。右兑金为体,离火克之。互中巽木,复三起离火,则克体之卦气盛。兑为少女,因知女子之被伤,而互中巽木,又逢乾金兑金克之,则巽木被伤,而巽为股,故有伤股之应。幸变为艮土,兑金得生,知女子但被伤,而不至凶危也。

3、Feature

下面我们用行为驱动的方式来描述年月日时起卦的Feature文件。

年月日时Feature文件

备注:maven工程记得添加Cucumber依赖

cucumber-java依赖

4、运行Feature文件

在工程上上右键运行所有Feature,可以通过Feature文件驱动测试。注意:这时候工程中只有一个Feature,没有测试代码,也没有业务代码。

在工程上右键: Run

这时候会提示你有错误,有测试步骤未实现:

未实现测试步骤

把上面提示的代码片段拷贝到测试代码里面,创建测试步骤,把抛出异常的代码去掉,再执行一遍。

空的用例通过

注意:Junit方式运行Cucumber还需要一个Java测试文件,参考:

测试文件

第一阶段结束。

下一篇:易数编程之梅花2弄

源码:https://github.com/Git008/yishu

参考:

易经杂记:梅花易数解读

上一篇 下一篇

猜你喜欢

热点阅读