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

如果一个程序员提交的代码连格式化对齐都不做,敲代码是怀着怎样的心情....

  •  
  •   abbenyyy · Jun 11, 2019 · 7664 views
    This topic created in 2711 days ago, the information mentioned may be changed or developed.

    没错,我说的就是我的同事,我也不要求你有多牛逼,提交的代码不能有任何警告,我只是要求提交代码前按一下快捷键格式化对齐代码,每次都说 okok,然后依然我行我素。

    重点是有时候这个同事可能没空,我要修改他的代码,一堆没对齐代码附加一大堆警告,作为一个强迫症看得想死。

    提交的代码连格式化对齐都不做,到底是什么让他走上码农的道路...

    58 replies  •  2019-06-12 18:05:28 +08:00
    HuHui
    HuHui
    Jun 11, 2019 via Android❤️1
    1
    可以强制格式化的
    cstj0505
    cstj0505
    Jun 11, 2019❤️1
    2
    1.可能他不知道怎么做。
    2.如果他不知道,告诉他,现在不管他以前知不知道,他现在知道了
    3.他既然知道了,你就可以要求他做一下,反正也不难
    d553296416
    d553296416
    Jun 11, 2019❤️1
    3
    比起写的代码各种内存泄露影响程序稳定性而言,,这种可有可无的事情我能忍,反正最后可以用工具一键格式化
    merin96
    merin96
    Jun 11, 2019❤️1
    4
    1.和气地告诉他 IDE 自动格式化多么好用,在哪儿设置, 什么不知道?我来帮你搞
    2.严肃地告诉他我有强迫症你不格式化每次拉代码我都很难受以致于无法工作
    3.git 钩子设置一些静态检查工具,不过不让合

    难度一次上升
    qinyusen
    qinyusen
    Jun 11, 2019
    5
    git 强制格式化提交。。。
    amwyyyy
    amwyyyy
    Jun 11, 2019
    6
    我也不能忍,我有强迫症,代码必须对齐、不能有警告。
    passerbytiny
    passerbytiny
    Jun 11, 2019
    7
    论软件过程管理或者软件质量管理的重要性。
    hydrionz
    hydrionz
    Jun 11, 2019
    8
    每次拉下来新代码,直接先格式化以后提交.....次数多了你们领导也会恨那个不格式化代码就提交的人....
    dr1q65MfKFKHnJr6
    dr1q65MfKFKHnJr6
    Jun 11, 2019
    9
    IDEA: Ctrl+Alt+L Eclipse: Ctrl+Alt+F Git: 格式化提交
    chendy
    chendy
    Jun 11, 2019❤️1
    10
    如果他用的 idea 的话…直接让他把提交框上的”格式化”打钩就行了
    Caballarii
    Caballarii
    Jun 11, 2019❤️11
    11
    这哥们需要去写两笔 python
    chmaple
    chmaple
    Jun 11, 2019❤️2
    12
    如果是 IDEA,并且用自带 GIT 工具提交的话,可以大家都导入一份同样的格式化配置文件,然后提交 commint and push 的时候勾选上自动格式化的选项
    话说格式化是必须的,而且规则要一致,不然两个人改了同一个类,提交或者有冲突的时候会疯。
    abbenyyy
    abbenyyy
    OP
    Jun 11, 2019
    13
    @chmaple 学到了,我待会帮同事勾选自动格式化
    classyk
    classyk
    Jun 11, 2019
    14
    自己格式化一下再看也很容易,如果自己觉得难,那也就不要怪别人觉得难啦
    la2la
    la2la
    Jun 11, 2019
    15
    msg7086
    msg7086
    Jun 11, 2019 via Android
    16
    我初中写代码的时候就被教导说格式要正确。从此养成良好的习惯。
    dfourc
    dfourc
    Jun 11, 2019❤️1
    17
    @msg7086 #16 你初中就开始写代码了

    msg7086
    msg7086
    Jun 11, 2019 via Android
    18
    @galikeoy 和我一起写代码的人不少是小学,我是班里年纪最大的人。
    shingle
    shingle
    Jun 11, 2019 via Android
    19
    想到了我的前同事,写 go 语言都不格式化代码的。。。配个 goftm 又不是什么麻烦事
    metrue
    metrue
    Jun 11, 2019
    20
    PR review 的时候 request change 就好了,不 approve 烂代码。
    dfourc
    dfourc
    Jun 11, 2019
    21
    @msg7086 #18 请问您今年贵庚
    jasonyang9
    jasonyang9
    Jun 11, 2019
    22
    Python:???
    Greendays
    Greendays
    Jun 11, 2019
    23
    联动这歌帖子,估计楼主同事在里头支招呢 233
    https://www.v2ex.com/t/572728#reply28
    Takamine
    Takamine
    Jun 11, 2019
    24
    格式化,不是...一键格式化吗。
    而且格式化的配置文件大家不应该要求是统一的吗。
    hstdt
    hstdt
    Jun 11, 2019 via iPhone
    25
    使用 lint 工具辅助代码质量控制,要是能和绩效挂钩的话,就更容易让他写好代码了。
    skylancer
    skylancer
    Jun 11, 2019❤️1
    26
    @galikeoy 初中折腾并不觉得稀奇... 感觉是不是有点大惊小怪了兄弟
    mamahaha
    mamahaha
    Jun 11, 2019
    27
    我想大多数创造代码的人都会打草稿,做几行就会进行一下输出测试,这个时候考滤的是逻辑,代码块测试通过了才会考虑格式。
    如果代码是 copy 来的,大段大段的不用测试,就像整理代码一样,这样的一上来就会把格式做到位吧。
    EminemW
    EminemW
    Jun 11, 2019 via iPhone
    28
    你可以告诉他怎么快速格式化,他可能不会,,
    linvaux
    linvaux
    Jun 11, 2019 via Android
    29
    幸亏这哥们儿不是写了 js 的
    Bartholomew
    Bartholomew
    Jun 11, 2019
    30
    文件保存就自动格式化 vscode 有这个设置
    dfourc
    dfourc
    Jun 11, 2019
    31
    @skylancer #26 只是惊讶
    dfourc
    dfourc
    Jun 11, 2019
    32
    @linvaux #29 不然又给前端招黑 hahahaha
    akira
    akira
    Jun 11, 2019
    33
    @linvaux 幸亏不是写 py 的
    kaedea
    kaedea
    Jun 11, 2019 via Android
    34
    最近刚回在做代码格式规范的工作,说一下感受。

    这个问题看上去简单,要做到强制还真的难:
    1. 历史代码一大堆格式问题,全部修改不现实
    2. 每个 ide 自带的格式化标准都不太一样
    3. 代码风格每个人见解都有出入,很难完全统一

    其实主要原因还是团队整体技术氛围,我之前呆过的团队,工程师文化比较好,大家普遍对代码质量有追求,所以风格统一上容易达成一致,新来的人代码写得搓也会在 rv 环节被纠正过来。

    现在呆的团队代码风格就有点野了,历史包袱太重,大家普遍各顾个的,突然间要求别人要换成另一种写法,大概率会被白眼...

    最终的方案是:
    1. 合入检查只做修改、新增代码的格式规范
    2. 代码规范只强制做结构上(空格、缩进)和命名上的要求单单这样就已经检查出不少问题
    3. 通过 EditorConfig 统一项目的基本配置
    4. 引导开发多使用 ide 的自动补全功能,已经提交代码前自觉格式化代码

    但是我还是觉得之前团队的状态才是根本的解决方案啊,无奈。
    Vincex
    Vincex
    Jun 11, 2019
    35
    可以用 githook 提交时自动格式化
    kaedea
    kaedea
    Jun 11, 2019 via Android
    36
    @kaedea
    除了这个代码规范,类似的还有 git log 规范和 git merge /rebase 基本用法规范的问题,也真是难控制,通过 git hook 做强制检查容易,要引导别人按到新的流程去做事才是最难的。

    个人觉得一个团队的整体工程师文化水平,从以上三点就能看出个大概了。

    现在的感觉就是,要培养用户的习惯真的很难啊。
    loading
    loading
    Jun 11, 2019 via Android
    37
    我提交 c 语言 pr 时我的空格都要按坏了……用工具又会因为里面用到的宏啊什么的对齐得乱七八糟。

    我越来越喜欢 go 了。
    FakeLeung
    FakeLeung
    Jun 11, 2019
    38
    怎么可以不经意的让我同事看到这篇?
    msg7086
    msg7086
    Jun 11, 2019
    39
    @galikeoy 老了老了)
    msg7086
    msg7086
    Jun 11, 2019
    40
    @kaedea git merge rebase 规范这个实在是太难了。
    太多的程序员不会用 git,只知道无脑 commit/merge/branch。
    Meltdown
    Meltdown
    Jun 11, 2019 via Android
    41
    我遇到的情况是公司没有统一规定代码风格,然后有些人可能用了 IDE 的自动格式化,有些文件明明明大家都没做什么修改,这些 IDE 造成的格式修改却老是被提交来提交去,随便一个提交就搞成了几千行
    ginjedoad
    ginjedoad
    Jun 11, 2019
    42
    golang 从来不需要对齐,直接保存对齐了....
    SingeeKing
    SingeeKing
    Jun 11, 2019
    43
    配个 git pre-commit hook
    chen2019
    chen2019
    Jun 11, 2019
    44
    ide 直接格式化就行了 管他对不对齐
    zhuzhibin
    zhuzhibin
    Jun 11, 2019 via iPhone
    45
    代码规范意识很重要 团队里可以定义一套代码规范 大家都要遵循这么一套规范 就没那么多鸟事了
    lincanbin
    lincanbin
    Jun 12, 2019 via Android
    46
    你需要做的是加 ci,ci 里跑 lint 做格式检查,格式出问题系统自动发邮件给他然后通报全组。
    hastyfish
    hastyfish
    Jun 12, 2019 via Android
    47
    vim gg=G
    dangyuluo
    dangyuluo
    Jun 12, 2019
    48
    CI 是干什么的?你管他对齐对不齐?
    elfive
    elfive
    Jun 12, 2019 via iPhone
    49
    @galikeoy 我初中就开始参加计算机奥林匹克竞赛了……
    FrankHB
    FrankHB
    Jun 12, 2019
    50
    KPI 掌嘴。
    FrankHB
    FrankHB
    Jun 12, 2019
    51
    @chen2019 污染 commit history 可能引起更严重的强迫症。
    (我最烦的是 autocrlf 之类一时半会儿还未必马上能发现的……)
    nanxiaobei
    nanxiaobei
    Jun 12, 2019
    52
    上 Prettier 完事
    russian
    russian
    Jun 12, 2019
    53
    @linvaux 哈哈哈。我以前维护一个 nodejs 工程,接受一个人的活,然后这个人根本不知道什么叫 async,后调函数一直硬刚,最多好像嵌套了 7,8 个括号
    dfourc
    dfourc
    Jun 12, 2019
    54
    @elfive #49 好吧,见识太少,小时候条件 环境太差,并没有经历这些
    MonoLogueChi
    MonoLogueChi
    Jun 12, 2019 via Android
    55
    @hydrionz 你去改他的代码,格式化,可能会造成冲突
    magicdawn
    magicdawn
    Jun 12, 2019 via iPhone
    56
    嗯知道 node 的话用这个

    npm i -g yo generator-magicdawn
    yo magicdawn:add-config


    会添加 husky prettier lint-staged
    HangoX
    HangoX
    Jun 12, 2019
    57
    我在 ci 上加了逻辑,格式不过不让合并,然后共享自动化格式的配置文件。问题解决了
    buhi
    buhi
    Jun 12, 2019
    58
    1. 有这么多时间折腾代码哪里应该有一个空格, 哪里应该换行, 花同样的时间在其他地方不是更好吗?
    2. 这个格式化本来就没有一个四海皆准的规范, 都是见仁见智, 举两个例子比如函数体的左大括号应不应该换行, 缩进应该用 tab 还是空格. 假如你定了一个标准, 然后强制同事去遵守, 然后因为跟同事的习惯不符影响了开发效率, 会不会有一种钦定的意思?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1112 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 99ms · UTC 18:14 · PVG 02:14 · LAX 10:14 · JFK 13:14
    ♥ Do have faith in what you're doing.