员工分享 | 从记忆到软件设计(二)

 

本文根据公司内部的分享讨论整理浓缩而来。我们会简要介绍人脑的记忆系统,然后从这个视角简要讨论软件设计和工具。一家之言,望各位方家不吝指正。

 

 
 

关于设计

 

 
 
 

设计是一种心智的内隐活动,因此重度依赖于工作记忆。

米开朗琪罗说,他只是看到了大理石中的天使然后把它释放出来而已,这应该是设计的“内隐性”的好例子。

而当代大型系统的设计,不管是摩天大楼,还是计算机操作系统,都远远超出了单个大脑内部思考的能力范围。

设计作为一种显性知识和技能被我们讨论的时候,首要的价值是作为处理大规模复杂系统的工具,在时间和空间上对复杂度进行分治。

在时间上的分治,需要把大系统进行适当切分,每个时间段仅思考其中一部分。

在空间上的分治,除了恰当切分以外,还需要一套契约让不同的人沟通协作。

 

 
 

关于语言

 
 

语言是沟通的工具。

语言是思考的载体。语言会引导和制约思考。想象一下仅使用甲骨文如何去思考空间弯曲?

从沟通的角度看,源代码是面向人而不是编译器的。

软件的全生命周期成本有80%发生在维护阶段。换言之,对代码的阅读和修改才是核心成本。

我们可以说,好的代码是读着顺畅、容易理解的代码。从容量和组块的角度来说,每个函数内部行数适当、各行的抽象层次和粒度一致的会更容易理解。

从思考的角度看,程序设计语言是从更贴近机器向更贴近人脑的方向演化。越贴近人脑的思考方式,我们使用这种工具的效率就会越高。

 

 
 
 

UML

 
 

UML是一种图形化的程序设计语言。

因为图形化,UML可以额外调动图形空间画板的能力,图形的抽象层次更灵活,而且看图比读字的效率更高。

作为沟通工具,UML是高效和精准的。

作为思考工具,UML丰富的表达形式也能很好的帮助我们理清思路。

 

 
 
 

软件设计原则

 
 
 

相信大家都知道很多设计原则,比如高内聚、低耦合,到KISS、DRY和SOLID。

原则大都简洁明了,容易判断,适用范围很广。

但原则也有自己的问题,就是缺乏情境,容易互相冲突。

在低耦合、KISS和SRP这些原则上,都能看到工作记忆容量的影响:限制了单次思考的规模,才更容易得出最优解。

 

 
 

模式

 

 
 

模式其实是无处不在的,不管是音乐、建筑还是社会关系。

模式是一种粒度较大的语言。

作为沟通工具,模式及其高效。比如“郭靖式的主角”,性格和际遇已经很清晰了。

作为思考工具,模式也非常效率。使用模式(定式)作为思考和记忆单元的职业棋手,不但可以记住很多棋谱,还能在一瞥之间了解一局棋的大致形势。

GoF设计模式本身一个优势是,它首先描述了问题,然后提供了解决方案。这样我们在遇到相似问题的时候,能够更容易通过情景匹配想到这个模式。

 

 
 
 

关于面向对象

 
 

天法道,物理法则塑造了宇宙;

地法天,宇宙环境塑造了地球;

人法地,地球生态塑造了人类;

软件法人,人类的思考方式决定了软件的一切。

大道至简,殊途同归,软件设计从无到有,从现实世界中汲取营养是自然的事情。

我们对现实世界已然非常熟悉,用现实来类比软件设计中的概念更容易让受众理解。

 

 
 
 

功夫在诗外

 
 
 

软件是对现实世界的模拟和表达,如果只是沉溺于设计技巧本身,容易变成华丽技术的堆砌。做出真正好的设计,需要对自然和生活的深刻理解。

我们需要提醒自己,设计是为了解决问题和创造价值而存在的工具,只有适合当下情境的才是好的设计。

 

 

作者

 

徐平胜

美名软件产品/设备集成项目部 部门经理  

十五年编程老兵

 

联系方式
苏州美名软件有限公司
中国江苏苏州工业园区
金鸡湖大道1355号
国际科技园二期C303
215021
电话:+86(0)512 68075718
业务咨询:转1009,1054
市场合作:转1006
传真:+86(0)512 68075728
联系我们!
info-cn@mm-software.com
微信公众号