软件源于数学,开发要抓住不变部分,形成模式,再进化成框架
软件的抽象方法继承于数学,例如求和符号。数列的数据项的表达式千变万化,求和的形式不变。求和的数据项在软件中由一个常量抽象为一个表达式。在一个数列上的求和,求积,计数等,计算方法是千变万化的,对数列的遍历过程是不变的,表示计算方法的表达式被抽象为匿名函数。如果一个程序代码块,具有模板的特征,只有极少处地方有变化。大部分保持不变。大部分程序员图省事省心,会直接复制粘贴再改改要变化的部分。这种情况下整个程序代码块要抽象成函数,变化的部分抽象成函数的参数。这能保证代码块中的不变部分只有一个位置存在。而复制粘贴会导致不变部分在系统中有多个影子存在,爽在当下,后患无穷。
在程序开发中,大程序员把系统中不变的部分,或者说是几乎不变的部分抽象成模式,变成树形结构的代码调用体系,把系统中频繁变化的部分抽象成,变量,函数的参数,或响应函数,回调函数,中断向量等程序体。这些可变部分留给了小程序员填格子。
再提高一个层次,考虑一下大型软件系统中的可变部分与不变部分。系统界面的风格,布局和交互变化很频繁这是数据的呈现方式,像人换衣服一样频繁,但数据的存储方式长久不变,因为换个数据库可以就伤筋动骨了。解决之道是使用接口,作为防火墙实现了隔离变化。
再看看数据库管理系统的内部情况。不变的是事务机制,锁机制,并发处理机制,索引查找机制,线程池机制等这些部分都模块化,作为数据库管理系统自身框架的组件而存在。频繁改变的是数据的存储时的逻辑结构。用户们常常要求修改数据表的结构以应对业务上的变化。数据库管理系统的开发商应对之道是向用户提供了标准化的结构化查询语言。把千变万化的需求更改的复杂性,约束在查询语言之中。类似的处理之道还有系统界面上的级联样式表。抓住了不变部分,就抓住了制胜的牛鼻子。
软件源于数学,开发要抓住不变部分,形成模式,再进化成框架
最新推荐文章于 2024-07-08 00:31:23 发布