从美感上说,lisp代码应该写的够“碎”,每个函数都简单到只有一两行。但是实际写代码没有人会整那么碎。
因为有强大的宏系统,理论上,大多是不好看的结构可以调整成好看的结构,但是,没人会闲的在那种事上花时间。
有一些东西在lisp里面注定是难看的,比如eval in quote,比如dotted pair,比如gensym,比如'((())),但是这些东西就是lisp的一部分。
多层括号影响阅读,即使加了彩虹括号,如果这个函数非常长,仍然会很容易弄乱层级。我写elisp代码多了才开始惯用Emacs提供的C-M-f,C-M-b,C-M-k这些键。
不管哪一门语言,如果想写出维护性好的代码,注释的量不应该少于代码的1/3,但实际上很多人几乎不写注释,写的爽就完了。
即使强大的programmar写代码也很少是成竹在胸,在设计上花的时间与实际编码的时间可能是1:1甚至2:1(这里面有一部分时间是一遍写代码一边调整设计)。当这个过程完成后,美观是会普遍打折的。而在lisp里面,出于代码的灵活性,这个过程会被拉的很长。
Emacs自带的缩进排版不是万能的,但也没有更通用的方案了,总之,像写python那样子无脑按tab是不行的,你得有意识地考虑什么时候换行合适。如果你不想考虑,你一定会遇到同样的问题。
也许可以找一些更智能的lisp排版系统试试。