验证输入
良好编程的一般规则是,如果程序接受输入,它必须能够处理它接收到的任何内容。 这通常意味着必须仔细筛选输入,以确保仅接受有效输入以进行进一步处理。 我们在上一章学习时看到了一个这样的例子 读 命令。 一个脚本包含以下测试以验证菜单选择:
[[ $回复 =~ ^[0-3]$ ]]
[[ $回复 =~ ^[0-3]$ ]]
这个测试非常具体。 如果用户输入的字符串是零到三范围内的数字,它只会返回零退出状态。 不会接受其他任何内容。 有时,编写此类测试可能非常具有挑战性,但需要付出努力才能生成高质量的脚本。
设计是时间的函数
当我还是一名学习工业设计的大学生时,一位睿智的教授说,一个项目的设计量是由给设计师的时间决定的。 如果给你五分钟的时间来设计一个“杀死苍蝇”的设备,那么你就设计了一个苍蝇拍。 如果给你五个月的时间,你可能会想出一个激光制导的“防飞系统”来代替。
同样的原则也适用于编程。 有时,如果一个“快速而肮脏”的脚本只使用一次并且只由程序员使用,它就会起作用。 这种脚本很常见,应该快速开发以节省成本。 此类脚本不需要大量注释和防御性检查。 另一方面,如果脚本用于 生产用途, 也就是说,对于一个重要的任务或由多个用户反复使用的脚本,它需要更仔细的开发。