古人根据天体运动、四季变化以及天地间万事万物发展变化的现象,通过比类归纳,总结出五种物质或事物的属性,木土火金水,称之为五行。古人将万事万物的发展变化规律抽象为这五行的相互影响、转化。
根据对五行的一点浅薄的认识,我总结了一些编程与五行之间的关系,属于胡扯范畴。
任何一个系统的运转都要符合圆的规律。任何一个系统的运转都依赖不同的要素相互配合。这些要素的形态、功能可能都各不相同,但是又有机的结合在一起,形成一个系统。从五行的角度来看,这些要素都有各自的五行属性。作者试图将这些要素抽象为5大要素并试图分辨出其五行属性。
土:规格、元数据、配置。
水:接口。
木:通信。
火:类,函数。
金:数据。
五行之间的平衡是系统能够正常运转的基础。如果要设计一个系统,那么就要考虑到这五类要素之间的平衡。任何一个要素缺失,都会导致系统的设计开发陷入困难。
五行之间存在相生(生我、我生)相克(克我,我克)关系。系统的设计开发如果想找到一个比较好的方案,可以从要素之间的生克角度来思考。
生起到促进作用,克则是制约限制。A生B说明A提供好的基础让B能够发展,或者说A是B的基础。C克D说明D的发展受到C的限制,或者说C是D的约束。
水克火表明:类和函数的实现受限于接口。
火克金表明:数据的产生、流动、消费等依赖类和函数。
金克木表明:通信方式取决于数据的产生,流动,消费的整个过程。
木克土表明:软件自身的定义受到通信的限制。
土克水:接口的定义依赖软件自身的定义。
从解决问题角度来说,正向来看,一方面可以从一个要素入手然后兼顾其他要素,另一方面某个要素的问题的根源可能是其他要素。反面来看,如果在解决某一个要素的问题的时候没有很好的思路,那么可以把其他的四个要素都通盘考虑一下,也许就会有好的思路。