(本文为草稿,校对时间待定)
原文链接:https://norvig.com/luv-slides.ps
6. 其他
说话算数
- 不要误导读者
预料到读者的误解 - 使用适当程度的特异性
- 小心那些声明
不正确的声明会破坏代码 - 一一对应
坏的声明:只是一个虚构的例子
(defun lookup (name)
(declare (type string name))
(if (null name)
nil
(or (gethash name *symbol-table*)
(make-symbol-entry name))))
应该为(declare (type (or string null) name))
命名规范:保持一致
在命名中保持一致:
- 保持大小写一致:
大部分更倾向like-this,而非LikeThis *special-variable*+constant+(或某种惯例)- Dylan使用
<class> - 考虑
structure.slot -p或?;!或n;->或-to-- 动宾式:
delete-file
对象属性:integer-length
比较name-file和file-name
不要使用宾语-动词或定语-宾语结构 - 参数顺序一致
- 区分内部和外部功能
不要混合&optional和&key;小心使用1或2个&optional参数
使用关键字保持一致(key、test、end)
命名规范:明智地选择名字
明智地选择名字:
- 最小化的缩写
大部分的单词有多种可能的缩写,但只有一个正确的拼写。把名字拼出来,这样更容易阅读、记忆和发现。
一些可能的例外:char、demo、intro和paren。这些单词在英语中越来越像真正的单词了。一个很好的测试(针对以英语为母语的人)是:你会在对话中大声说这个单词吗?我们之前的示例crntct和processcontextdescr就无法通过这个测试。 - 不要用另一个局部变量来遮蔽一个局部变量。
- 清楚地显示已更新的变量。
- 避免有歧义的名字:使用
previous或final而不是last。
符号技巧:第0列中的括号
大多数文本编辑器将第0列中的左圆括号作为顶级表达式的开始。除非你提供反斜杠,否则在第0列的字符串内的左圆括号可能会混淆编辑器:
(defun factorial (n)
"Compute the factorial of an integer.
\(don't worry about non-integer args)."
(if (= n 0) 1
(* n

本文介绍了Lisp编程中的命名规则、函数定义、字符串处理、多行注释、错误预防、多任务和多进程编程,以及如何使用deftable简化表结构。强调了清晰命名和良好编码习惯的重要性。
最低0.47元/天 解锁文章
1566

被折叠的 条评论
为什么被折叠?



