• 请不要在回答技术问题时复制粘贴 AI 生成的内容
GPLer
V2EX  ›  程序员

是否存在无默认行为的代码格式化工具

  •  
  •   GPLer · Aug 15, 2022 · 3344 views
  •   You need to sign in to view this topic
    This topic created in 1455 days ago, the information mentioned may be changed or developed.

    不可否认,代码格式化工具非常有用,但例如 prettier 这样的代码格式化工具,在规范代码的同时会强制你做出取舍,比如在一个 Javascript 项目里包裹字符串只能用单引号或者只能用双引号,但可能我只想要统一缩进,结果它把单双引号也统一了。

    那么是否存在一种代码格式化工具,可以最小程度的修改代码,以满足高可读性的要求呢?

    简单来说,该工具应满足以下条件:

    1. 可以关闭所有规则,即该情况下执行前后代码无变化
    2. 可以选择性的开启某些规则,规则与规则之间无依赖关系,以满足渐进式的规则配置
    3. 可以通过写插件或者写脚本实现非常精确的配置,而不只是全局的开关
    18 replies    2022-08-16 19:58:07 +08:00
    renmu
        1
    renmu  
       Aug 15, 2022 via Android
    1 ,2 你可以设置 prettier 达成
    Jooooooooo
        2
    Jooooooooo  
       Aug 15, 2022
    idea 应该就有这种功能
    GPLer
        3
    GPLer  
    OP
       Aug 15, 2022
    @renmu 第一条我参考 ![Is there a way to ignore a specific rule? [Possible Feature] #9171]( https://github.com/prettier/prettier/issues/9171) 试了下,像 `singleQuote` 的配置项,配置成 'never' 后确实不生效的,也就是说是可行的,还是我太急躁了,感谢大佬。
    至于第二条,其实 prettier 好像本来就是这样的
    第三条估计 prettier 也能做到,但是插件的方式还是挺麻烦的,能做到一、二也够用了。
    GPLer
        4
    GPLer  
    OP
       Aug 15, 2022 via Android
    @GPLer 经测试,never 并不是生效了,而是配置文件中出现了意料之外的值,以至于格式化程序没有执行。。。
    参考 https://stackoverflow.com/questions/63813336/how-to-ignore-specific-rules-with-prettier
    所以说 prettier 似乎并不能满足要求。
    iamqida
        5
    iamqida  
       Aug 15, 2022
    jetbrains 家的 ide 都可以做到
    GPLer
        6
    GPLer  
    OP
       Aug 15, 2022 via Android
    @renmu 但 prettier 应该不能关闭某些规则,还是不能满足要求。
    zhuweiyou
        7
    zhuweiyou  
       Aug 15, 2022   ❤️ 1
    你在一个项目或者一个文件里,用不同的风格, 是不是你的不合理呢? 感觉除了老项目不应该格式化以外, 新项目应该统一标准.
    wu67
        8
    wu67  
       Aug 15, 2022
    其实 jb 家的 ide 可以处理这个场景. 编辑器可以按语音配置风格, 非常详细, 几乎开箱即用, 你想要自己配, 也可以微调, 设置窗口右侧有风格示例.

    prettier 其实也可以大体上的设置, 但是不算开箱即用(个人认为). 折腾半天还需要配合 eslint 修一遍才行(个人做法是 prettier 格式化一边, 然后 eslint 修一遍), 这样才能符合我对代码风格的期望. 仅 vue 场景, react 未知.

    现在不怎么搞 idea 了(其实是穷得不想买), 凑合着用 vsc, 用是能用, 就是各种不方便

    可以看看这篇文章 https://blog.isayme.org/posts/issues-50/ 这是我以前配置 vsc 时参考的文章之一
    molvqingtai
        9
    molvqingtai  
       Aug 15, 2022
    你这不是说的 eslint 吗
    Nugine0
        10
    Nugine0  
       Aug 15, 2022 via Android
    试试 dprint
    placeholder
        11
    placeholder  
       Aug 15, 2022
    没有,不用找了,我找了好久了。
    liulangyude
        12
    liulangyude  
       Aug 15, 2022
    @wu67 破解啊,现在网上教程一大堆,正版主义者的话当我没说
    wu67
        13
    wu67  
       Aug 15, 2022
    @liulangyude hhh, 很快就会有一堆人来批你了...在这网站正版是政治正确. 另外我就是懒得折腾了, 基本每次升级都会失效
    mingl0280
        14
    mingl0280  
       Aug 15, 2022
    Visual Studio 就行了呗。
    94
        15
    94  
       Aug 16, 2022
    所有的代码格式化工具都会提供配置项的吧....
    如果只需要某几项,可以单独自己搞一个风格,然后只检查自己配置的项目的。

    可以放到编辑器的配置项里面全局使用,也可以搞到项目目录下只检查项目内的编码风格。
    Vaspike
        16
    Vaspike  
       Aug 16, 2022
    @liulangyude #12
    是的,我就是正版主义者,我来了
    一千多买一年用来吃饭的家伙,贵么
    人人都盗版,Jetbrains 倒闭指日可待
    另外,OP 说的功能 JB 系 IDE 都可以做到
    yangzzzzzz
        17
    yangzzzzzz  
       Aug 16, 2022
    eslint 改一下格式化风格应该可以满足,airbnb 、prettier 、还有标准的风格,基于这些自己在修改参数
    secondwtq
        18
    secondwtq  
       Aug 16, 2022
    可以说存在,也可以说不存在。

    对于一个黑盒的软件成品来说,“无默认行为”by definition 是不可能的,因为这个软件设计的“功能”就是“行为”的一部分。“无默认行为”等于“无默认功能”,追求完全的自定义,最后都会扩大化到从 mian 函数重写整个软件。

    另一方面,很多软件是可以拿到源代码并自己编译的,可以不必“从 mian 函数重写整个软件”,而是在已有源代码上魔改,从这个角度上来讲这些软件确实“无默认行为”,毕竟你可以通过源码的方式修改所有行为。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5697 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 79ms · UTC 01:54 · PVG 09:54 · LAX 18:54 · JFK 21:54
    ♥ Do have faith in what you're doing.