程序范式的意义

用户头像
soolaugust
关注
发布于: 2020 年 08 月 19 日
程序范式的意义

本文转自“雨夜随笔”公众号,欢迎关注



在刚进入编程的世界时,很多人会告诉你,编程中最主要的是算法和数据结构,算法是让你理解如何用程序高效的达成目标,数据结构是让你理解如何更好的使用数据。很多人更是得出了程序=算法+数据结构





等你慢慢熟悉算法和数据结构后,就来到了实际的项目开发中,这时你面对的就不是简简单单的一段程序了,而是要构建一个庞大的服务,可能涉及到和其他人一起开发。这时光靠数据结构和算法已经不足以来应付这些了,我们就需要设计模式以及各种业务模型。





等熟练了这些之后,你会开始向全栈、架构等方向发展,会开始面对分布式等复杂场景。这时候你发现上面这些已经没有办法满足你的需求,你会开始接触领域模型,分布式架构,云原生架构等模式。也会根据具体的业务试着抽象出自己的模型来解决自己的问题。





而上面这些无论是算法、数据结构,还是设计模式、面向对象编程、函数编程,又或者是领域模型,各种架构都是程序范式的一种。程序范式就是一种抽象出来的方法,可以说我们学习编程的过程就是在学习和发明各种程序范式。



对于程序范式,不同的人有不同的看法,有些人认为程序范式没有用,因为现实情况非常复杂,与其学习各种各样的范式,不如多花些时间掌握编程的基本功。对于这种观点我是不赞同的,很明显这种是陷入了偏激的观点。在我看来程序范式至少有以下几点意义。

站在巨人的肩膀上

程序范式都是编程界的前辈对于场景的抽象总结,是对自己的经验和教训的总结。所以学习程序范式可以让我们从这些经验和教训中进行学习。我们不可能在一开始就了解了所有场景的解决方式,但是我们可以学习前辈们如何解决这种场景的。



而且这些范式都是经过了很多业务场景的检验和完善,里面包含很多富有技巧的设计和想法。通过学习这些范式,我们也可以学习在自己设计程序时应该注意的地方和向那些方向进行设计。并且如果我们充分理解了某些范式,那么我们在遇到类似场景的时候就不会手足无措。而是会脑中灵光一闪,会试着用范式来解决我们的问题,这无疑会减少后期因为思考不足导致代码的反复。

交流更加方便

程序范式都是被广泛任何的理念和定义,如果一个团队都学习了这些范式,那么交流起来就不会产生歧义,也不需要解释自己每个方法的内容。即使有人没有学习,他依旧可以从网上得到这些内容的定义和信息。这样会使得我们在团队合作上更加方便。同时在我们的代码中正确使用程序范式也可以让别人更加了解我们的设计和内容。



就像领域驱动模型中说到,在交流中我们应该使用双方都能理解的词语。因为如果双方对某个词语理解上有歧义,那么最终就会导致程序开发上的反复。程序范式就是程序员之间的通用语言,比如我们说观察者模式,那么即使之前没有理解过这个词语的工程师,在网上搜索后也能明白这个设计的思路。





复用性

程序范式基本上都是某类场景解决方法的抽象,我们学习程序范式能够更好的让我们编写的程序复用性更高,这样可以减少我们的开发量和增加我们的适用场景。如果我们所有的功能都要重新实现一遍,那么我们的工作永远都不会做完。



而通过对程序范式的学习,我们会不断理解抽象和复用的重要性。并且在日常开发中会不自主的尝试提高我们代码的复用性。

总结

所以我们应当多去了解一些通用的范式,因为他们会提供看待代码的角度,并理解前辈们在解决他们遇到问题的思路和抽象方式。这些都对我们之后编写我们自己的程序提供了很多很好的素材。根据这种思路来抽象我们的解决方法,以提供复用性更强的组件来减少我们的开发工作。



但是我们不能过度依赖程序范式,因为每种范式都有其适用的场景,生搬硬套可能会导致我们的程序复杂度变高,并且脱离具体的业务场景。我们要学会的是从程序范式中理解其背后的设计理念和应用场景,只有这样,我们才能更好的使用各种范式以及寻找出我们实际业务的新的范式。



欢迎关注



发布于: 2020 年 08 月 19 日 阅读数: 29
用户头像

soolaugust

关注

公众号:雨夜随笔 2018.09.21 加入

公众号:雨夜随笔

评论

发布
暂无评论
程序范式的意义