美文网首页
谈封装。

谈封装。

作者: goleo | 来源:发表于2017-05-27 20:03 被阅读0次

很多程序员误解了封装的用法。以为只要现阶段是相同的业务,就必须封装。

还有些没什么项目经验的更奇葩。看到一点相似的代码就想把他们提取出来进行封装。层层封装之后,他们自己都看不到这些封装程序在不同的业务情况,到底表达着怎样的语义,导致bug 错漏百出。

与nginx,mysql之类的软件不同。nginx,mysql 是面向机器编程的。所以他们的需求并不会太复杂。这里指的复杂不是算法不复杂。

而是,nginx,mysql,没有直接接触复杂的世界现象。这里的复杂是指业务需求的复杂。

特别是在7层模型,应用层做开发的程序员。分不清,什么是 program 跟 over program。他们不知道如何做到 合适的program。

举个例子,他们看到有两个按钮,都是下单,一个是前台的,一个是后台的,一个是第三方的下单接口。有一天,需求来了。一位新来的开发者A

改了前台的下单代码重新写了下。测试了下,觉得不错,没报错。就完成任务了。直到有一天,第三方下单出bug了,后台出bug了。

后来团队讨论,说这是封装的问题。因为这三个都是下单。没有良好的封装,所以改了一处地方,不知道还有没其他地方没改。

这就是被封装的思维误导的。这根本就不是封装问题。前台的下单代码,跟其他两个,有个函数公用了。不过这位开发者删了这个函数,重写,而没去找这个函数还在哪个业务系统(业务系统是指后台跟第三方下单接口)用到了。

看到了吗?这不是因为封装问题而导致的,是因为开发者没对业务系统进行充分了解导致的。如果一个开发者,连系统的业务都不能理解,不想去了解。你相信,这样一位应用层开发者。他能用代码为这个业务实现一个基本可行的解决方案?

业务层开发,字面上就已经说明,业务为主。业务系统是怎么产生的?是为了给这个复杂多变的世界现象给出一个解决方法。

很多写程序的,会为了技术而技术。他们忘了,程序语言当初是为了什么而发明出来的。其实这些都是知识面广度不够的问题。就好像PL领域。

能做出优美的语言设计的人,都是非常全面的人才。

单纯写代码的,总是想找到一个大一统的方法论 来给这个复杂多变的时间提供一个死板的解决方法。他们没发现一个现象,即使一个业务系统真的上线了。用这个系统的人,并不会只是在页面点几个按钮,特殊情况他们会改数据库,线下操作。所以你看,技术系统根本不能完全解决复杂的世界现象产生的问题。业务系统只是解决了一部分,或者加速了解决问题的速度。

这种大一统的方法论,我把他称之为“银弹”,就是万能的药,能治百病。其实这种东西,已经在软件工程领域,失败了无数次。例如,TDD,DRY原则,KISS。不过人们总是不吸取历史的教训。重复犯一样的错误。

最后,其实计算领域已经不缺牛人。缺的是脑科学领域的牛人。其实过去几十年,人们想在各种软件工程项目中找到一些方法论。只要他们了解人脑,他们足够尊重人的智慧。他们就会这样想,为什么在这种业务场景下,这个人的脑子会犯这种错误,是疲劳。还是业务系统过度臃肿,导致超出了他的脑子的计算范围,所以他考虑不到一些边边角角。当时他的脑子到底进行了何种运算。怎么来更高效的避免这个人犯这些错误?

相关文章

  • 谈封装。

    很多程序员误解了封装的用法。以为只要现阶段是相同的业务,就必须封装。 还有些没什么项目经验的更奇葩。看到一点相似的...

  • [iOS] 架构之网络

    网络封装的方案 参考文章 iOS应用架构谈 网络层设计方案 CBNetworking AFN 的封装,别出心裁 抛...

  • 初谈java封装

    如果文章对你有所帮助,请点喜欢并关注,这将是我最大的动力,谢谢 众所周知,在java中,每一个对象都可以拥有属性和...

  • JavaScript面向对象与设计模式

    1. 面向对象 1.1 封装 封装的目的在于将信息隐藏。广义的封装不仅包括封装数据和封装实现,还包括封装类型和封装...

  • 浅谈vue项目进阶开发-axios篇

    今天来谈一谈有关vue项目中使用Ajax插件库axios,以及对它做的一些封装。 安装就不再提了,在这axios;...

  • 三天打造一款全栈简易视频直播网站(三)

    从前端谈项目架构、接口设计、前后端设计、node.js中间层封装、项目测试、性能优化以及运维部属 0.今日任务 在...

  • 三天打造一款全栈简易视频直播网站(二)

    从前端谈项目架构、接口设计、前后端设计、node.js中间层封装、项目测试、性能优化以及运维部属 0.今日任务 昨...

  • 02.OOP面向对象-3.一些理解

    对封装的理解?封装,类本身就是一个封装,封装了属性和方法。方法也是封装,对一些业务逻辑的封装。私有也是封装,将一些...

  • 三天打造一款全栈简易视频直播网站(一)

    从前端谈项目架构、接口设计、前后端设计、node.js中间层封装、项目测试、性能优化以及运维部属 0.先备知识 在...

  • 封装微信小程序请求

    封装wx.request 封装api 封装请求调用

网友评论

      本文标题:谈封装。

      本文链接:https://www.haomeiwen.com/subject/utaqfxtx.html