专注网站建设行业优质供应商!
青岛做网站,青岛网络推广,黄岛网站优化 咨询电话:15064263987    24小时服务热线:15064263987     城市分站

黄岛网络推广
黄岛网络推广
黄岛网络推广
NEWS CENTER ·
新闻中心
关注东站 关注前沿

前端写代码有必要封装太好么?

发表日期:2020-06-11 07:30    文章编辑:admin    浏览次数:    

 我最近对这个问题也有一些考虑和吐槽,前几天我发了个主意:

“可读性 + 可保护性 是再怎么着重都不为过的代码质量标准 —— 不要故意为了重用代码而笼统,更不要为了笼统而笼统 ,多考虑代码的语义、概念”正是因为我在作业的项目上遇到了一些“可怕”“繁琐”“装腔作势”的代码复用(详细代码不方便发到知乎上)—— 有几个地方为了复用一些 看起来 重复的代码,但实际上它们有不同的事务概念

前端写代码有必要封装太好么?

在不同的事务逻辑和不同的事务场景里,也强行抽出一个共用的组件,“封装”了所谓的重复代码。同时,因为运用场景非常不同,这个组件不得不在内部写下了很多的 if else 判别条件 以表达“如果是场景X就走这条路;如果是场景Y就走那条路...”更可怕的是,核心逻辑被一而再再而三地往深处笼统

导致我一开始计划了解这个组件时,不得不一层层得往下阅览代码(当然也包括走向不同的 if else 的情况)最后的结果是,这个组件关于后来的保护者(比如我)似乎是一个噩梦,既难以阅览更难以运用。回到标题,期望咱们能够考虑一下封装的初衷和目的:封装的根本目的是 代码复用 吗?

不,我认为不是。我认为 封装的根本目的 是 让代码更容易保护,而代码复用通常是封装带来的一个副作用。咱们常常听到的 同时推崇 封装 + 代码复用 的说法: 这样能够防止重复的代码,让代码更简练;当被封装的代码实现需求改变时就不需求去更改调用的地方(只改一处而不是改多处)让代码更简练也好,不需求多处改代码也好 —— 都是表象,而不是根本。根本是进步代码的可保护性。正是期望代码更容易保护,咱们才尽量让代码简练一点

正是期望代码更容易保护,咱们才期望更改实现时,不需求动太多处代码。原谅我这边略显啰嗦,我仅仅期望大家能看清咱们做封装的初衷,而不是生硬地盲目地遵循一些所谓的原则。换句话说,假设 封装 使代码更难保护了,那就算它复用了再多的代码也是一个过错的做法!

以我上面举的例子,有个需求是让我改变这个组件在 X场景下的某个行为,我发现我无法轻松地做到,我得查到组件里那些杂乱的 if else 的那条”正确“的途径 ,小心谨慎地更改,生怕影响到其他地方 —— 如此憋屈的体验让我愤然在这个组件头写下一条注释 :”重构这个组件,让它对开发者更友爱,否则就抛弃掉它!“(现在我是这个项目负责人,所以这个事大概率后边也是我去做)


简单理一下我的观点:

  1. 封装是一个方法,不是方针。
  2. 封装有利有弊,必须看清不好的那面,容易不要封装
  3. 错误的封装远比复制粘贴可怕。
  4. 去封装笼统而不是代码,好的笼统往往能感知到它的鸿沟。
  5. 坏程序员关怀代码,好的程序员关怀数据结构和它们之间的关系。这话是 Linus 讲的,我以为很有道理。
  6. 技能永久服务事务。你的事务有价值,完成再肮脏也没关系。
  7. 不要限制第 6 点“事务”的指代内容。假如你是开源作者,你的项目便是事务。每一个开源项目都应看作一个产品 -- 技能产品。
  8. 人的精力是有限的,多考虑大的价值。

contact us

15064263987

  • 电话:15064263987
  • 邮箱:690005405@qq.com
  • 网址:https://www.4cak.com
  • 地址:青岛市城阳区希尔景园办公楼