Elixir 从零 · 第 31 课(展开目录)
01 · 先让代码说话02 · 先认六种值03 · 把值装起来04 · 从旧 list 生成新 list05 · 让形状对上06 · 用 case 做选择07 · 把文字安全变成整数08 · 拆开 &1 和管道09 · 把代码放进项目10 · 真假不只靠 true11 · 走进嵌套数据12 · 一字不一定一字节13 · 让函数按形状接活14 · 把一列数收成一个值15 · 给不同问题选不同路16 · 给 map 一张名片17 · 让项目自己验答案18 · 让成功和失败长得一样19 · 读写文件先管好路20 · 只算眼前需要的21 · 同一句话,不同做法22 · 先约好模块会做什么23 · 把数据形状写在门口24 · 测试不只看一条好路25 · 把项目磨成一个命令26 · 定下小项目边界27 · 把真实文字洗干净28 · 只开三扇门29 · 把约定钉在代码旁30 · 打包,也留下脚印31 · 照任务书交卷
ELIXIR · 作品 · LESSON 3145 分钟

照任务书交卷

从干净环境跑完验收表,确认功能、错误与交付说明。

01 · 先看完整例子

运行最终验收表

再补一个空文件用例;每项结果写进 README 的验收记录。

Elixir
# 1. 自动检查
mix format --check-formatted
mix test
mix escript.build

# 2. 成功文件:核对三项统计
./trail_stats fixtures/poem.txt

# 3. 缺失文件:核对错误文字与非零状态
./trail_stats fixtures/missing.txt
echo $?
先对照结果
  • 检查与测试全通过。
  • 成功文件输出三项数字。
  • 缺失文件显示短错误,退出状态不是 0。
02 · 回头拆代码

从第一行往下读

  1. 从全新终端按 README 命令构建,避免依赖记忆中的隐藏步骤。
  2. 逐条保存实际输出,与第 26 课预期对照。
  3. 只修验收失败,不在交卷前临时增加需求。
03 · 认清新符号

符号不是暗号

$?

多数 shell 中读取上一条命令的退出状态。

mix test

运行自动测试,防止验收修改引入回归。

--check-formatted

只检查格式,不改文件。

04 · 代码里的概念

把名字和意思对上

01

验收

按事先写好的外部标准判断项目是否完成。

02

已知限制

当前版本有意不处理的范围,写清后不让使用者误解。

05 · 再说清楚

这些写法为什么有用

最后一课不再添功能。把第 26 课的任务书拿回来,一项一项验证。

验收从使用者入口运行,不绕过 CLI 偷看内部函数。失败消息要短,退出状态要对。

记录版本、构建命令和已知限制。一个范围清楚的小项目,比半截宏图更值得保存。

06 · 自己改一次

合上答案,动手

写出空文件的验收结果。

练习起点
给定:一个空 UTF-8 文件
运行:./trail_stats empty.txt
期待:lines=____, words=____, chars=____

目标结果: 三项都为 0,命令成功退出。

卡住了,再看提示

空文件没有行、词和字符。

运行过以后,再看一种答案
一种答案
给定:一个空 UTF-8 文件
运行:./trail_stats empty.txt
期待:lines=0, words=0, chars=0,退出状态为 0
想一想:验收时发现一个很酷的新功能想法,要立刻加吗?

先记进后续清单。当前只修任务书内的失败,保持交付范围稳定。

带走

记住三句

  1. 1

    验收标准应在编码前写下。

  2. 2

    从用户入口检查成功与失败。

  3. 3

    完成一个小闭环,再开下一段路。

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