编程的核心思维

编程与其他的工作一样,同样需要各种思维,而其中最重要的同时也能够区分能力的我总结的主要有抽象,隔离,分层,迭代,类比,模块化这几个。
 
1. 抽象
将具体的业务逻辑和对象能够抽象出程序的模型(各种编程范型和建模)。
抽象过程是从具体到一般,同时应该将具体的很多无关的细节或者特例区分剥离出来,让模型能够体现现实同时具有一般性(用于扩展)。
 
2. 隔离
隔离的目的是做到高内聚和低耦合。有两层含义:
(1)抽象和具体的隔离
抽象是具体的接口或者一组接口和对象,将对外交互的逻辑(流程)和接口封装提供给外部调用者,而具体的实现独立,对外封闭不可见。
可参考面向对象设计的几个基本原则(这些原则虽然是在面向对象领域提出的,但同样适合其他的编程范式)。
(2)功能的隔离
不同的功能或者模块应该隔离(参考“模块化”章节)。
需要特别注意的是,即便做到了模块化,但是在业务逻辑实现时也经常出现多个不同模块或者组件的具体操作流程。也就是说违反了单一抽象层次原则
(SLAP强调每个方法中的所有代码都出与同一级的抽象层次,即所有代码所执行的是同一个事务的不同步骤,他们属于同一个层次的逻辑。也就是说你不该在该方法中既处理底层的数据库操作逻辑,同时包含高层的业务代码,甚至还包含了界面显示逻辑处理细节。)
 
3. 分层
没有哪个问题不能通过增加中间层来解决的。
分层可以将不同的实现或者业务逻辑隔离出多个不同的层级模块或者组件。
如果需要将某个分级扩展,而需要修改对外调用接口和逻辑时,那么此时可以增加中间层执行一次封装。
副作用
分层虽然可以增加系统的灵活性和可扩展性,但是也增加了系统的复杂性。所以需要在这两者之间做好平衡。
 
4. 迭代
这个思维不是程序设计层面的,而是软件工程的重要内容。
迭代也包含了两方面:
(1)同一个功能实现的版本迭代
一个功能可以存在许多不同的实现方法。但是对于市场需求而言,我们应该在第一时间实现一个可使用的版本并发布,然后对这个实现进行重构或者优化升级。
不应该在一个实现上追求尽善尽美,而影响项目进度,对于快速的市场变动或者高度变化的需求更应该这样做。
(2)系统开发的版本迭代
不同的功能可以通过不同版本向市场发布。
优先实现必须的核心功能或者具有高价值的功能,而那些低价值的或者不必须的功能放在后面甚至不开发。
迭代还可以带来一个优势:
快速探知市场变化和需求。
 
5. 类比
这个属于业务层面。
即能够将具体的业务实现和具体的业务场景能够对应,同时能够跳出实现逻辑而与真实业务场景经行类比思考。还有就是将实现的逻辑或者功能与显示生活的某些例子进行类比,而不是死的代码实现。
不具备该能力,那么只能做个代码搬运工或者被淹没在浩瀚的代码中。
 
6. 模块化
不同的功能应该模块化。
模块化可以做到复用,也可以做到隔离。
模块可以是以下形式,具体取决于系统设计和编程语言:
  • 函数;
  • 类/结构体;
  • 文件;
  • 可执行的对象(程序,服务,动态库,静态库)。
 
posted @ 2019-12-20 10:27  Chorulex  阅读(589)  评论(0编辑  收藏  举报