「灵感收集」从代码质量角度考虑,你会对哪些方面进行重构 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
akasuv
V2EX    程序员

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

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

    目前在做一个基于 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 就是吃饱了没事干。
    zm8m93Q1e5otOC69
        4
    zm8m93Q1e5otOC69  
       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     Solana     2811 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 14:23 PVG 22:23 LAX 06:23 JFK 09:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86