when-and语句应该如何排版?

哈,我就经常做些违反 elisp 惯例的事情,例如:

(let ((...))
  (when (...)
    (body)
    ))

主要考虑的是:

  • 避免编辑出错,毕竟整行复制/粘贴/删除是最方便的,其它语言的一些风格指南鼓励 trailing comma 也是这个原因:

    // bad
    [
        1,
        2
    ]
    
    // good
    [
        1,
        2,
    ]
    
  • 突出 body

  • 强调结束,避免与后续代码纠缠。至今不太习惯 elisp 的缩进,代码稍微复杂一点,缩进就不太直观了。如果写成 body)))),而且这一行比较长的话,就难免要怀疑下一行跟 body 是不是在同一个 if/when 下了

简单来说还是照顾视觉,我个人看代码首先是块,然后才是行。所以把逻辑块排版清楚,会更容易理解。