2KB项目,专业的源码交易网站 帮助 收藏 每日签到

编写杰出的代码:怎么减少代码的认知负荷

  • 时间:2019-06-14 14:33 编辑:2KB 来源:2KB.COM 阅读:445
  • 扫一扫,手机访问
  • 分享
摘要: 英文原文:Wri
英文原文:Writing good code: how to reduce the cognitive load of your code

Bug 少,功能好,轻易修正。好的代码影响深远,并且它多是发生 10 倍任务效力的开发者的首要缘由。虽然好代码非常主要,但开发老手却茫无头绪。关于这一主题的技能多而烦复,让老手们怎么记得住?“Code Complete(《代码大全》)” 是这个主题的经典,但内容多达 960 页!

我以为应当树立起杰出的心态,如许,不论你用甚么言语或者库,都会天然而然的写出高质量的代码。这里我首要谈到 5 个相干的观点。记着它们,轻松写出写出好代码。

防止挺拔独行

当你读到一些文章中的新技能时,如醍醐灌顶,必定会想要写点看起来很聪慧的代码,让同业们面前一亮。

问题是人们只是想修完 BUG,然后继续处置其它工作。那些聪慧的技能经常只会成为一种消遣。我已经在“将神经科学使用于软件开发”中谈到,当人们自愿花心思来了解你的某段代码时,它们的“精神仓库”会敏捷填满,因此难以了解此中深意。

 [译者注:图片中的注释内容:这在 C 言语顶用于防止误写成 variable = null。比来它形成很多人迷惑,但仿佛并没带来多大益处]

不要在任务中运用太多可能需求额定说明的特性化方法。

不要用“你的方法”来编写代码,只需求依照规范(的代码标准)来编写就好。再次夸大,要写让人读得清楚,看得下去的代码,让人家可以了解它。

分而治之

模块化可使庞杂的代码构造变得明晰,除此以外另有非常多办法可以到达异样的目标,而无需创立更多函数。将长长的前提表达式保管为一到两个变量就是个不错的办法,可以免挪用函数的开支。这些变量可以用在其它地方,乃至可用于组合更庞杂的前提。

拆解问题的办法在于尽量的让每一个部分坚持集中,只影响部分形态,不要混入不相干的问题,要防止反作用。编程言语和库凡是会带来各自响应的问题,防止这些问题可让你的代码更专注于其表达的营业。单一义务准绳就是经过集中代码和部分化代码带来杰出设计的例子。

[译者注:图中注释内容:这是不需求额定函数开支的一种模块化办法]

我爱好应用变量来实行逻辑划分。

TDD(Test Driven Development,测试驱动开发)的成功施行表示出了它所带来的益处,它迫令人们应用一些之前不受欢送的原则。无形态的代码已经被厌弃又慢又没需要(大部分老的 C/C++ 代码中可以看到),但是如今每一个人都在议论纯函数。就算你不采取 TDD,你也应当进修它面前的准绳。在新的形式下任务会让你成为适应性极强的开发者。

别离代码并使其可辨别处置

你写代码的时分面对着甚么样的艰苦,你的盘算机和Tools也面对着异样的艰苦。代码的庞杂性,与需求实行的预处置和需求处置的突发状况存在着或多或少的联络。

如今临时抛开那些额定的构建Tools所带来的益处。它们需求你运用特定范畴的言语,比方自定义模板,或者庞杂的静态数据构造,比方哈稀表。IDE 凡是不擅长处置这些工具,要找到相干的代码段则愈加艰苦。

尽可能防止运用不能很好支撑 IDE 的言语扩大和库。它们给你的生产力带来的益处,弘远于简略单纯设置装备摆设和用简练语法保管击键带来的小便当。

 [译者注:图中注释内容:运用奇异的字体串可能形成 IDE 不能准确辨认你的代码]

ServiceLocator 是与 IDE 整合欠安的一个设计样例。

另外一个坚持 IDE“整合度”的相干办法是防止编写特别的代码。大多数言语都供给了编写静态代码的才能。假如滥用这些特征,比方特别的字符串、特别的数组索引和自定义模板言语特征等,会发生难以衔接的代码库[译者注:这里的衔接应当是指互相联系关系的关系,衔接最直接的影响是在运用 IDE 等Tools实行重构的时分可以主动依据衔接关系修正相干援用]。普通说来,那些只要你一个人材能看懂的特征会让你摔跟头的,由于假如 IDE 不能了解这些代码,在你想实行构造调剂的时分,IDE 就没法帮你实行重构。

让程序可读

努力于可猜测的架构。这类架构下你的队友要实行某项查找就会很轻易,可以浪费很多时间。一旦你为项目断定了一个全体的架构,就必定要把首要元素放在显眼的地位。运用 MVC?把模子、视图和把持器放在他们本人的目次下,不要放在三个深条理的目次中,也不要放在几个分歧的地方。

我在后面谈到了模块化。也存在过分的模块化,让定位代码这类工作变得困难非常。IDE 可能会带来一些协助,但凡是你常常会让 IDE 疏忽库目次,由于此中有非常多不相干的代码,或者它的索引需求人工处置一些问题,就会形成两全其美的场面。尽可能运用较少的库,选用那些尽量多掩盖你需求的库。

库和Tools也可能成为新人的妨碍。我比来运用 EcmaScript 7 (babel) 构建了一个项目,厥后我才意想到我们的低级开发职员不断由于想搞清楚它而卡在那边,这对团队的生产力形成了宏大丧失。我低估了这对一个老手所带来的压力。不要运用对以后来讲太难把握的Tools,等机遇成熟再运用。

这是我写的一个 makefile 中的真实代码。老手不需把握过量的新技术。

让代码易于了解

假如你曾经做到了这一点,那我们来处理更主要的问题——选择好名字,这是软件开发中的主要部分。构建Tools在这方面不能供给协助,缘由很容易,盘算机不会真正晓得处理计划面前的逻辑。你得经过文档来说明代码,而与主题相干,且契合高低文,表现变量和功用的称号就可以很好做到这一点。语义化的称号乃至可以减少对文档的需求。

在称号中运用前缀对了解它们很有协助。这在过来是一种盛行的做法,我以为对这类作法的误用招致了它的灭亡。像匈牙利定名法如许的前缀系统最后只是为了增加意义,但最初用于此中的高低文愈来愈少,终究少得只剩类型信息。

[译者注:图中的注释内容:运用称号来表达意图,不要应用言语来耍小聪慧]

迩来,Fluent 接口常常被滥用。

最初要说说陈词滥调的回溯庞杂度。容易地说就是要尽量减少前提分支的数量。每多一个分支都会增加缩进,同时下降可读性。不外更主要的是,增加的工具越多,你需求跟踪的工具就越多。

结论 & 相干浏览

本文引见了五个容易的整体观点,我盼望你能从中轻松的进修到组织代码的办法。

理论是最好的教师,用编程来稳固实际。假如你还没有如许做,我真挚向你引荐代码大全。它带来了大量的示例,简直分析了你可能碰到的每种问题。

本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协议,假如我们的任务有进犯到您的权益,请实时联络我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
上一篇:Docker 公司已死
下一篇:奇虎360 和 go
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部