优秀的Lisp编程风格教程:第六章(译文)

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

(本文为草稿,校对时间待定)

原文链接: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-filefile-name
    不要使用宾语-动词或定语-宾语结构
  • 参数顺序一致
  • 区分内部和外部功能
    不要混合&optional&key;小心使用1或2个&optional参数
    使用关键字保持一致(keytestend
命名规范:明智地选择名字

明智地选择名字:

  • 最小化的缩写
    大部分的单词有多种可能的缩写,但只有一个正确的拼写。把名字拼出来,这样更容易阅读、记忆和发现。
    一些可能的例外:char、demo、intro和paren。这些单词在英语中越来越像真正的单词了。一个很好的测试(针对以英语为母语的人)是:你会在对话中大声说这个单词吗?我们之前的示例crntctprocesscontextdescr就无法通过这个测试。
  • 不要用另一个局部变量来遮蔽一个局部变量。
  • 清楚地显示已更新的变量。
  • 避免有歧义的名字:使用previousfinal而不是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 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值