安的编程实践笔记

一本写在方格纸上的练习本。记下每次动手写代码时学到的东西,特别是那些让我卡了一下午、后来又觉得理所当然的地方。

本页的小实验:生命游戏

四条规则,一张方格纸。点格子画细胞,然后按“运行”看它们自己长。

第 0 代,0 个细胞
这四条规则是什么
  1. 活细胞周围少于两个邻居,会孤单地死去。
  2. 活细胞周围有两个或三个邻居,继续活着。
  3. 活细胞周围多于三个邻居,会因拥挤而死。
  4. 空格周围恰好三个邻居,会诞生一个新细胞。

最近的几页

  1. 先给测试起名字,再写测试

    以前总是先写断言,最后随便起个名。试了一周反过来:先用一句话写下“它应该怎样”,写不出来说明我还没想清楚要做什么。

  2. 用二分法找到那个坏提交

    一个功能不知道从哪天开始坏的。与其一个个翻记录,不如让 git 帮我二分:标记好坏两端,每次只回答“这一版好不好”,七步就找到了。

    git bisect start
    git bisect bad
    git bisect good v0.3
    # 测一下,然后告诉它 good 或 bad
  3. 递归其实是一叠便利贴

    把每次函数调用想成往桌上压一张便利贴,返回就是揭掉最上面那张。这样想之后,栈溢出也就好理解了:桌子只有那么高。

  4. 正则表达式要写给明天的自己看

    能用命名分组就用命名分组,能拆成两步就别挤成一行。一周后回来读,我感谢了当时多敲的那几个字。

贴在显示器边上的便条

  • 先让它跑起来,再让它跑对,最后才是跑得快。
  • 报错信息从最上面那行开始读。
  • 删掉的代码不会出错。