目前在做一个基于 JS 语法树的 cli 工具,基本思路就是通过提前配置好的规则扫描目标代码文件,并在符合规则的代码区域自动激活相关注释。
现在只做好了一个规则,就是判断函数主体行数是否超过特定行数,如果超过,就会在指定区域激活一段可自定义的注释,示例如下:
之前
function func() {
/* 此处省略 60 行 */
}
之后
// TODO: 代码超过 50 行,需要重构 [Generated comment]
function func() {
/* 此处省略 60 行 */
}
目前我只想到函数行数限制这一个,从 Clean Code 里面估计还能找到一些,但是想先来问问大家,集思广益。
1
fucUup 2021-03-01 05:06:44 +08:00 via Android
搞笑,Linux 内核函数 3000 多行,linus 本人都没骂人直接合并,你 60 行,有没有理由,p9 总监同意没有
|
2
fucUup 2021-03-01 05:09:58 +08:00 via Android
先把 esLint 提示做完,再去想其他
|
3
legiorange 2021-03-01 09:52:44 +08:00 via Android
只有数据驱动这样做可以。
事件驱动和 tdd 就是吃饱了没事干。 |
4
uselessVisitor 2021-03-01 10:21:34 +08:00
还是太闲了
|
5
qinyusen 2021-03-01 14:01:30 +08:00
然后一个 300 行函数可以直接实现的功能封装成 4-5 层,每层 30 行就开心了?看一个实现跳 5 次?
一般人脑子,压栈 3 层就是不错的头脑了,考个 985 不成问题。 实现有实际业务意义的子功能,里面最多嵌套 3 层函数代码到原子函数(三方库接口、内部库接口),否则免谈。 我们重构过,看一个实际业务的算法实现要跳 11 次的长链调用。 为了减少单个函数的阅读代价增加读代码的人的大脑的压栈代价,怕不是你没 debug 过长逻辑业务吧。 |
6
jones2000 2021-03-01 15:24:28 +08:00
当你要往你框架里面加新功能时,发现加不了了, 或者要改很多逻辑的时候, 你需要重构了。
|