打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一位IBM老鸟的编码习惯,五分钟就能上手!

前言:w3cschool的程序员A君告诉小编,当他还是新鸟的时候,偶然得知一个5分钟就能学会并且运用的思维习惯,据说是一位IBM老鸟对新手的亲言传授,而这个习惯持续了多年,一直成为他日常编码习惯中的一部分。

这种思维习惯是根据其个人经验检验而得,它有一个非常清晰的宗旨就是:编码的时候只思考同一个思维层次的逻辑,在这层完成之后再思考下一层。

事实上,我们每个人智力都是有限的,就算是天才,同一个时间内也只能思考有限内容的东西,这个事实的存在说明了程序bug的存在。因此,作为新手程序员,编码的时候不要跨抽象层级思考,要先在同一个抽象层级里思考,保证我们有限的智力里面当前层级的逻辑正确,再思考下一个。

这里涉及到两个概念,跨抽象层级思考和同一个抽象层级的思考。我们不妨通过一个例子来解释:假设现在我要编写程序打车去上班。

按照日常生活的一般规律,首先是穿戴衣物,然后上厕所、刷牙、洗脸,最后出门打车。

上面的描述,是把“打车上班”这件事情分成了几个符合顺序和操作逻辑的模块跟动作,属于同一个思维层级,我的大脑能够承载这些逻辑,通过这套逻辑就能够把这件事情完成。接着我把它写下来:

function goWorkByCar () {

这个抽象层次的东西已经完成,我甚至不用注释,通过这个函数就能知道其操作的顺序和逻辑。而其中我们没有完成的四个函数,其具体实现就是下一个抽象层次的东西。现在我们已经完成同一个层级的事情,我的注意力可以从打车上班转移到下一层级:dressUp(怎么穿衣服这件事情上):

从柜子里把衣服拿出来,先穿上半身,再穿下半身。

符合正常的操作:

function dressUp () {

我们看看洗漱怎么做:

上厕所,刷牙,洗脸
function wash () {

出门下楼呢?

我要先出门,然后锁门,然后坐电梯。
function goDownstairs () {

打车呢?

用手机打车,然后坐车走人
function goByCar () {

然后再用这种方式实现像 `brushTeeth` 和 `washFace` 具体的实现,想想它们需要什么操作。你会发现我们不停地在填函数,函数里面又不停地出现新的函数需要我们去完成。每个函数体里面的操作都和这个函数所要完成的目的相关,在一个函数里面,我们只关心这个函数需要完成的目标所需要的操作。例如“打车上班”这个任务所依托的 goWorkByCar,我们在这里并不关心怎么刷牙,因为它是下一层的东西,我们只关注完成“打车上班”这个目标需要哪几步。

很多人觉得编程很难,因为你接到一个“打车上班”的任务以后就开始往脑子里面填满了刷牙打车穿衣服这种不成逻辑和顺序的任务,并且都把它写到一个函数里面去。如果我们刷牙、开门这些操作都放在这个函数里面,那么一开始就会陷入无限的细节当中而失去了主要目的的关注,而且大脑也无法承载如此复杂多端的细节,处理不好就很容易出现 bug

而这种思维方式可以让我们不停地把一个大的任务在同一个层级做分解,保证这一层的步骤和逻辑正确以后,再进行下一层的分解,最后其实是一个树状的结构,树的叶子结点才是具体的代码算法实现。这样的代码写出来不仅可以逻辑清晰、bug减少而且还很轻松,因为你每一层思考的东西其实都很简单,不知不觉就把代码写完了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
程序员调试能力和相关书籍
如何进行高效迅速的CodeReview
程序员面试之道(《程序员面试笔试宝典》)之快乐编程的好习惯有哪些?
第一章(数制、编码与逻辑代数)作业及答案
C++编码规范之内联函数
可以使你成为更优秀程序员的5个好习惯
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服