Erlang 从零 · 第 26 课(展开目录)
01 · 先打开 erl02 · 先认常见 term03 · 分清两种文字04 · 变量只接一次05 · 拆开一列,再筛一次06 · 把文字安全变成整数07 · 用 case 选一条路08 · 让函数继续走09 · 把代码放进模块10 · 条件必须说真话11 · 一层一层取数据12 · 文字先说清编码13 · 让函数子句排好队14 · 带着累加器往前走15 · 先看值,再选路16 · 给模块立规矩17 · 让 rebar3 管项目18 · 让结果有固定形状19 · 把磁盘当成会失败的邻居20 · 把函数交给 list21 · record 留在院里22 · 先写模块之间的约定23 · 把 term 形状写出来24 · 小测试与整段路25 · 把应用磨成命令26 · 先把小项目圈住27 · 把真实文件洗干净28 · 公开入口越少越稳29 · 把约定留在源码旁30 · 打包,也留下线索31 · 按最初任务交卷
ERLANG · 作品 · LESSON 2630 分钟

先把小项目圈住

为“行迹”统计命令写任务书,只做读文件与计数。

01 · 先看完整例子

先写一页最小任务书

前三行写进 README,后三行在系统终端运行。

Erlang
%% 输入:一个 UTF-8 文本文件路径
%% 成功:打印 lines、words、chars 三行
%% 失败:路径不存在或内容不是有效 UTF-8

rebar3 new app trail_stats
cd trail_stats
rebar3 eunit
先对照结果
  • 项目创建成功,初始测试任务可以运行。
02 · 回头拆代码

从第一行往下读

  1. 用一句话写用户要完成的事,不写内部函数名。
  2. 列出成功和失败结果,也列出不做清单。
  3. 项目创建后先运行测试,确认环境可用。
03 · 认清新符号

符号不是暗号

rebar3 new app trail_stats

创建本阶段使用的 Erlang 应用。

argv

命令启动时收到的参数 list。

exit status

命令交给系统的成功或失败数字。

04 · 代码里的概念

把名字和意思对上

01

项目边界

这次明确要做和不做的范围。

02

验收例子

从使用者角度写出的输入、命令和可观察结果。

05 · 再说清楚

这些写法为什么有用

项目只做一件事:读取 UTF-8 文本文件,输出非空行数、词数和字符数。

明确不做目录扫描、不改原文件、不做网页,也不在这里学习 OTP 进程。那些能力留给 BEAM 主线。

先写一个成功例子与两个失败例子。模块和测试都为这张验收表服务。

06 · 自己改一次

合上答案,动手

补全本项目不做的两项。

练习起点
不做:
- 扫描整个 ____
- 修改输入 ____

目标结果: 写出“不扫描整个目录、不修改输入文件”。

卡住了,再看提示

两个空是“目录”和“文件”。

运行过以后,再看一种答案
一种答案
不做:
- 扫描整个目录
- 修改输入文件
想一想:为什么项目开始前要写不做清单?

它守住练习范围,让实现决定都能回到同一目标。

带走

记住三句

  1. 1

    项目聚焦一个问题。

  2. 2

    先定外部结果,再写内部模块。

  3. 3

    不做清单能防止范围失控。

本课结束代码也跑过一次,就把这一课收好。