V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
akasuv
V2EX  ›  程序员

「灵感收集」从代码质量角度考虑,你会对哪些方面进行重构

  •  
  •   akasuv · 2021-02-28 23:54:37 +08:00 · 1549 次点击
    这是一个创建于 1362 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前在做一个基于 JS 语法树的 cli 工具,基本思路就是通过提前配置好的规则扫描目标代码文件,并在符合规则的代码区域自动激活相关注释。

    现在只做好了一个规则,就是判断函数主体行数是否超过特定行数,如果超过,就会在指定区域激活一段可自定义的注释,示例如下:

    之前

    function func() {
    /* 此处省略 60 行 */
    }
    

    之后

    // TODO: 代码超过 50 行,需要重构 [Generated comment]
    function func() {
    /* 此处省略 60 行 */
    }
    

    目前我只想到函数行数限制这一个,从 Clean Code 里面估计还能找到一些,但是想先来问问大家,集思广益。

    fucUup
        1
    fucUup  
       2021-03-01 05:06:44 +08:00 via Android
    搞笑,Linux 内核函数 3000 多行,linus 本人都没骂人直接合并,你 60 行,有没有理由,p9 总监同意没有
    fucUup
        2
    fucUup  
       2021-03-01 05:09:58 +08:00 via Android
    先把 esLint 提示做完,再去想其他
    legiorange
        3
    legiorange  
       2021-03-01 09:52:44 +08:00 via Android
    只有数据驱动这样做可以。
    事件驱动和 tdd 就是吃饱了没事干。
    uselessVisitor
        4
    uselessVisitor  
       2021-03-01 10:21:34 +08:00
    还是太闲了
    qinyusen
        5
    qinyusen  
       2021-03-01 14:01:30 +08:00
    然后一个 300 行函数可以直接实现的功能封装成 4-5 层,每层 30 行就开心了?看一个实现跳 5 次?

    一般人脑子,压栈 3 层就是不错的头脑了,考个 985 不成问题。

    实现有实际业务意义的子功能,里面最多嵌套 3 层函数代码到原子函数(三方库接口、内部库接口),否则免谈。

    我们重构过,看一个实际业务的算法实现要跳 11 次的长链调用。

    为了减少单个函数的阅读代价增加读代码的人的大脑的压栈代价,怕不是你没 debug 过长逻辑业务吧。
    jones2000
        6
    jones2000  
       2021-03-01 15:24:28 +08:00
    当你要往你框架里面加新功能时,发现加不了了, 或者要改很多逻辑的时候, 你需要重构了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1011 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 22:20 · PVG 06:20 · LAX 14:20 · JFK 17:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.