编程语言
首页 > 编程语言> > 学习架构整洁之道——编程范式

学习架构整洁之道——编程范式

作者:互联网

 

一、结构化编程

1、可推导性

程序员可以用代码将一些已经证明可用的结构串联起来,只是证明这些额外代码时正确的,就可以推导出整个程序的正确性。

2、功能性降解拆分

程序员可以将大型系统拆分为模块和组件,而这些模块和组件最终可以次啊分为更小的可以证明的函数。比如:模块从业务视角才分,零售销售模块,可以拆分为正向的逆向的,订单、结算等模块,组件主要通过物理部署的角度去拆分。模块更应该关注领域划分的合理性,高内聚,低耦合。组件更关注复用性。

3、科学证明法:

科学方法论不需要证明某条结论时正确的,只需要想办法证明它时错误的。如果这个结论经过一定的努力无法证伪,我们则认为它在当下时足够正确的。

在程序界就是一段代码没有办法证明它时正确的,只能通过测试来证明它存在不存在bug。

测试的作用时让我们得出某段程序的结论已经足够事项当前目标的这一个结论。

二、面向对象编程

封装、继承、多态;任何一种支持面向对象的语言必须支持这三个特性。

面向对象编程对程序员来说意味这什么?

以多态为手段对代码中的依赖关系进行控制能力。

面向对象编程最大的价值或许就是提供了安全白能力的多态机制,从而使得实现大型系统中各个组件代码之间的松耦合变的越来越容易。代码组件隔离开后并行开发提升软件开发效率和扩展能力。

三、函数式编程

1、为什么软件架构要操心变量的可变性呢?

所有竞争问题、死锁问题、并发更新问题都是由可变变量导致的。如果变量永远不会被改变,那就不可能产生竞争或者并发的更新问题。如果锁的状态式不可变的那就用换不会产生死锁的问题。

比如:数据更新,尤其在并发场景下数据更新会产生各种各样的意想不到的结果。如果数据不需要更新,就不会存在问题。

2、可变性的隔离

一个框架设计良好的应用程序应该将状态修改的部分和不需要修改的部分隔离成单独的组件,然后用合适的机制来保护可变量。

类似读写分离,将更新状态和不更新状态逻辑区分。

总结:

结构化编程提供了科学的方法来验证程序的正确性。通过程序递归分解成能够可能伪的单元,用测试来证明程序在可控范围内是正确的。

面向对象则是通过包装函数指针的使用提供多态,这个可以解决系统中模块之间的相互依赖,实现依赖倒置,可以独立模块的构建部署。

函数式编程试图解决现有框架在遇到并发式的问题,这些问题通常由于变量的修改被导致的,而函数式编程则限制变量的可变性,可以通过事务回溯的方式来计算任何时刻的状态。

标签:范式,变量,编程,多态,更新,证明,模块,组件,整洁
来源: https://www.cnblogs.com/iswysya/p/16133380.html