其实这要看你的抽象化程度
一般在阅读程式的时候除非有必要,否则都不会追究到程式架构的最底端
我们都会在抽象化程度偏高的地方浏览,真的有需要才会再往下一层去检视实作
如果你的程式会让阅读者想要看里面的实作通常代表
1. 你的设计没办法交代清楚它到底确切在做什么?需要什么?使用时机?使用限制?…
…
一些惯例(命名惯例,design patterns…)可以让阅读者一眼就取得这些隐含的资讯
2. 这个东西的功能太神奇了(程式行为超出预期),超出一般人的预期
像是 qt 的 signal slot 机制就会让第一次接触的人摸不著头脑
因为它用名称来配对 signal slot 的做法不是标准的 c++ 语言可以做到的
3. 底层程式有虫,要抓虫啦
4. 你的 code 很漂亮,很能够引人入胜,让人家很想一直继续往下看 XD
所以说,要是有一个好的设计
那么阅读者根本就不需要去看那些效率取向的,最佳化过后的难懂的实作
因为你的设计就已经提供给阅读者他想要的所有资讯
根本不需要自己去阅读实作慢慢推敲啊
以上是对于提升整个系统整体的可读性,如果是要考虑实作本身的可读性的话
那么重点就会放在职责的切割和分配
最快最有效率的检查方式就是看在同一个 block 内的 code 的抽象化程度是否差不多
要是上一行是系统顶层的操作,下一行又是底层的东西,看起来一定很痛苦吧
而且这样把两个不同阶层的东西绑在一起就是在制造多余的相依性
回到原 po 算法取舍的问题,我会推 policy based design
它不但保留了程式的扩充性,又不损失效能,超美的 XD
※ 引述《gitignore (git)》之铭言:
: 最近上班在思考这问题
: 假如今天有个 O(log n) 的方法可以写出一个东西
: 但是程式码无法简化 以后维护的人应该也会很痛苦
: 因为不直观
: 另一个就是程式码非常简洁 但就一定是O(n) 甚至 O(n^2)
: 不知道大家会倾向于哪种?
: 我个人是比较喜欢clean code 因为过一阵字自己回来维护也比较快上手
: 但是感觉在学校学这么多 就是要能写出效率较好的程式码