现在还有多少人坚持写代码一行尽量不超过 80 个字符的规范呢?是什么语言 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
blakejia
V2EX    程序员

现在还有多少人坚持写代码一行尽量不超过 80 个字符的规范呢?是什么语言

  •  
  •   blakejia 2017-04-20 12:24:25 +08:00 16865 点击
    这是一个创建于 3098 天前的主题,其中的信息可能已经有所发展或是发生改变。
    94 条回复    2017-04-21 18:17:58 +08:00
    ferrum
        1
    ferrum  
       2017-04-20 12:27:07 +08:00
    这不叫规范,叫风格吧。

    我写什么都这样,主要是 24 寸的屏幕还要左右各开一个编辑器,写太长了水平方向就会有滚动条。
    lucifer9
        2
    lucifer9  
       2017-04-20 12:33:50 +08:00   1
    asm 的话,估计得很费劲才能一行超过 80
    luban
        3
    luban  
       2017-04-20 12:45:16 +08:00 via iPhone
    1080p 屏幕我改成了 120
    PythonAnswer
        4
    PythonAnswer  
       2017-04-20 12:49:22 +08:00
    尽量保持,但是以自然为宜。不强求。
    awolfly9
        5
    awolfly9  
       2017-04-20 12:51:16 +08:00
    python 我没超过 80 个字符,但是,加上缩进就超过了
    littleshy
        6
    littleshy  
       2017-04-20 12:52:14 +08:00   5
    我一般在 80 和 120 各打一条线,尽量不超 80 ,绝不超 120 。
    kokutou
        7
    kokutou  
       2017-04-20 12:53:54 +08:00   1
    java :啥?
    byfar
        8
    byfar  
       2017-04-20 12:55:11 +08:00
    sublime: >80 自动换行
    loveuqian
        9
    loveuqian  
       2017-04-20 12:55:51 +08:00 via iPhone   1
    肯定不是 oc , 80 都不够我一个方法名
    springmarker
        10
    springmarker  
       2017-04-20 12:57:07 +08:00
    还有这种说法?我说 idea 上那条线是干啥的呢
    bleaker
        11
    bleaker  
       2017-04-20 13:11:04 +08:00   44
    为什么现代 IDE 或编辑器会提示 80 字符?因为 Google Java 和 Linux Kernel 的代码规范是这样。

    为什么这两个规范会是这样?因为中古时期的 terminal (不是 Terminal Emulator )一行只有 80 个字符。

    为什么 terminal 会这样?因为上古时期 IBM 打孔机的纸带一行只有 80 个孔。
    k9982874
        12
    k9982874  
       2017-04-20 13:13:55 +08:00
    装完编辑器第一件事字体改成 Hack ,第二件事开 line number ,第三件事把一行 80 个字符改成 200
    AlisaDestiny
        13
    AlisaDestiny  
       2017-04-20 13:15:48 +08:00
    那是对当时的编辑器的指定的字符数吧。现在的编辑器这个数值可以适当放宽了。但是 java 源码中代码依然还是遵守这个规则的(毕竟是给全世界人看的代码)
    zhenjiachen
        14
    zhenjiachen  
       2017-04-20 13:34:41 +08:00   1
    使用 ide 开发 java ,然后 idea 后面会有一根线,我看到代码超过线了,我会手动换行。
    ghostheaven
        15
    ghostheaven  
       2017-04-20 13:48:05 +08:00 via Android
    @byfar 这个只是视觉上换行吧,并没有插入换行符,别人打开看还是一行。
    xxzs
        16
    xxzs  
       2017-04-20 13:55:47 +08:00
    要考虑到其它人阅读代码的感受
    如果太长的话要考虑重构
    glasslion
        17
    glasslion  
       2017-04-20 13:56:50 +08:00
    一般公司 /商业项目不会太讲究这个长度限制(当然也不能太离谱),而社区 /开源项目倾向于遵守。

    对于单显示器,把屏幕分割成两半,同时看两个文件的话, 80 个字符比较合适
    mornlight
        18
    mornlight  
       2017-04-20 13:58:32 +08:00
    Python PEP 8 里:
    Limit all lines to a maximum of 79 characters.
    zhy
        19
    zhy  
       2017-04-20 14:01:17 +08:00
    老实说,我更喜欢 120 。。
    Sharuru
        20
    Sharuru  
       2017-04-20 14:03:34 +08:00   2
    HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor.java
    msg7086
        21
    msg7086  
       2017-04-20 14:06:02 +08:00
    常年 120 ,偶尔 150 。用的 Ruby ,跑函数式的时候,经常一行写一堆话。
    otakustay
        22
    otakustay  
       2017-04-20 14:08:04 +08:00
    你思考下,我厂的 thinkpad 笔记本分辨率是 1366x768 ,其中横向 1366 ,假设字体是 14px ,那么可以显示 97 个字符,但是你要考虑编辑器并不一定是全屏的,你还要开侧边栏和 minimap ,综合下来为了能顺利阅读设置为 80 个字符有什么不对吗
    linkbg
        23
    linkbg  
       2017-04-20 14:12:09 +08:00 via iPhone
    python
    blacklee
        24
    blacklee  
       2017-04-20 14:12:53 +08:00
    我的屏幕一行能写 248 个字符。
    如果逻辑不复杂,我写到 200 个的时候肯定不会想换行。
    yjxjn
        25
    yjxjn  
       2017-04-20 14:14:06 +08:00
    现在在写 JCL , Cobol , PLI ,都不超过 80 字符。。。。不是说不想超,而是没法超。。。
    kera0a
        26
    kera0a  
       2017-04-20 14:18:47 +08:00
    有些语言比较简练,会遵守这个规则,长了简直难看,自己都受不了。
    另外一些语言,我去他妈的~, 80 个字符方法名都没写完
    ty89
        27
    ty89  
       2017-04-20 14:27:16 +08:00
    ![屏幕快照 2017-04-20 下午 2.25.57.png]( https://ooo.0o0.ooo/2017/04/20/58f854a35911f.png)

    自带分割线
    ty89
        28
    ty89  
       2017-04-20 14:28:01 +08:00
    ![]( https://ooo.0o0.ooo/2017/04/20/58f854a35911f.png)
    wohenyingyu02
        29
    wohenyingyu02  
       2017-04-20 14:32:44 +08:00
    oc 调用一个方法能写上一页
    kdwycz
        30
    kdwycz  
       2017-04-20 14:37:01 +08:00
    遵照 PEP8 规范 ……不过很多地方换行的规则比较疑惑,感觉怎么换行都不好看
    owt5008137
        31
    owt5008137  
       2017-04-20 14:45:02 +08:00 via Android
    我已经改 140 了, 1080p 屏幕字号 14
    sonyxperia
        32
    sonyxperia  
       2017-04-20 14:49:27 +08:00
    IDEA 有一条 120 的线,不过一般都是写完 reformat code 一下
    ioth
        33
    ioth  
       2017-04-20 14:49:44 +08:00
    fortran
    在学校玩过
    cobol 更好玩
    easing
        34
    easing  
       2017-04-20 14:49:56 +08:00
    超过 80 行,我们这边就 review 不过,不能 merge 的
    jswh
        35
    jswh  
       2017-04-20 14:51:54 +08:00
    自己想怎么写就怎么写,自己喜欢的风格就好了。写完了格式化一下再提交。
    repus911
        36
    repus911  
       2017-04-20 14:54:17 +08:00
    尽量吧 vim 开了插件查 碰到同事代码会忍不住扳回来
    rzti483NAJ66l669
        37
    rzti483NAJ66l669  
       2017-04-20 16:07:35 +08:00 via Android
    问题不大,看着乱就用插件 /扩展格式化一下就好
    Mogugugugu
        38
    Mogugugugu  
       2017-04-20 16:22:37 +08:00
    基本 120 吧.80 太少了,几个缩进都不行了....
    wwqgtxx
        39
    wwqgtxx  
       2017-04-20 16:23:28 +08:00 via iPhone
    用 jetbrains 全家桶写代码,习惯性按一下 Ctrl+Alt+L 格式化一下代码
    whenwind
        40
    whenwind  
       2017-04-20 16:23:33 +08:00
    看屏幕,只要没有横向滚动条就行
    bianhua
        41
    bianhua  
       2017-04-20 16:30:00 +08:00
    不用 80 行的你们要么是有个大显示器,要么根本不是真全栈(笑哭
    mosliu
        42
    mosliu  
       2017-04-20 16:47:41 +08:00
    这么多年习惯了
    该换行换行 更清晰
    sleeprottenbanan
        43
    sleeprottenbanan  
       2017-04-20 16:56:14 +08:00
    倒没有刻意去坚持,感觉长度过长,看着费力,自然就会想办法换行。。。。
    21grams
        44
    21grams  
       2017-04-20 16:59:09 +08:00
    都是 120 了。
    21grams
        45
    21grams  
       2017-04-20 17:00:17 +08:00
    @bleaker #11 Google java 的规范是 100
    lianxiaoyi
        46
    lianxiaoyi  
       2017-04-20 17:47:02 +08:00
    100 到 120 之间吧 一行 80 确实太少了 。。。。
    scriptB0y
        47
    scriptB0y  
       2017-04-20 17:51:11 +08:00
    必须啊,除此之外还有:
    文件最后不能留空行
    行尾不能是空格
    二目操作符左右空格
    逗号冒号后面空格
    函数参数换行要对齐
    不能 import but not used

    https://www.python.org/dev/peps/pep-0008/

    强制检查的
    smallHao
        48
    smallHao  
       2017-04-20 17:52:44 +08:00
    80 个是之前屏幕尺寸的限制 别教条式地遵守
    viator42
        49
    viator42  
       2017-04-20 18:03:58 +08:00 via Android
    方法名参数名写的越来越长想完全不超出 80 个字符很难做到
    superPershing
        50
    superPershing  
       2017-04-20 18:07:51 +08:00
    Python lint 会检查出来的,代码大部分时间是被阅读,只是偶尔被运行。
    realpg
        51
    realpg  
    PRO
       2017-04-20 18:11:56 +08:00
    这叫个乱规范
    早该淘汰了
    mko0okmko0
        52
    mko0okmko0  
       2017-04-20 18:32:40 +08:00
    code format 设定好,A 组自动宽度.B 组 80 字换行.
    每次开档或是变更视窗尺寸.跑 A 组.
    每次提交前,跑 B 组.
    jarlyyn
        53
    jarlyyn  
       2017-04-20 18:35:19 +08:00
    做不到

    函数命名就 96 个字符了

    lee015
        54
    lee015  
       2017-04-20 18:47:04 +08:00 via Android
    Android Studio 的默认是在 100 位置有条竖线。
    hanxiV2EX
        55
    hanxiV2EX  
       2017-04-20 18:47:48 +08:00 via iPhone
    看屏幕大小来,超出屏幕就换行。
    bulletmarquis
        56
    bulletmarquis  
       2017-04-20 20:55:33 +08:00
    awk 笑而不语
    曾经一行命令写了 1 屏半~
    timothyye
        57
    timothyye  
       2017-04-20 20:58:26 +08:00
    跟老式显示器有关
    XDDD
        58
    XDDD  
       2017-04-20 20:58:48 +08:00 via iPhone
    @scriptB0y 文件最后不留空行的话,每次追加内容都会有最后一行的 diff
    beginor
        59
    beginor  
       2017-04-20 21:07:50 +08:00 via Android
    如果你经常并排显示两个 tab 的话,就知道 80 换行的好处了,我是 79 换行
    TuringGunner
        60
    TuringGunner  
       2017-04-20 22:41:34 +08:00
    开两个窗口的话,超过 80 看得不爽
    yujinyj
        61
    yujinyj  
       2017-04-20 22:46:04 +08:00
    @bleaker 真相了,还在用 PCOM 的人表示 FB 80 是程序标配
    0915240
        62
    0915240  
       2017-04-20 23:01:17 +08:00
    现在屏幕都大了 80 不够了。
    看了下 idea 现在在 120 有竖线。
    Osk
        63
    Osk  
       2017-04-20 23:01:27 +08:00
    感觉 PEP8 会逼死强迫症
    kotokz
        64
    kotokz  
       2017-04-20 23:13:11 +08:00
    只要依靠 xxxfmt,都不是事
    zclzhangcl
        65
    zclzhangcl  
       2017-04-20 23:16:05 +08:00
    java ,用 idea , 120 行的时候有提示。一般不会超过这个线。
    以前用 eclipse 开发的时候,没有线提醒,也会自己加上提醒。不超过这条线。
    看 jdk 源码,发现一般都不会超过这条线。
    方便别人,方便自己。
    mutoulbj
        66
    mutoulbj  
       2017-04-20 23:29:08 +08:00
    现在一般改成了 120 , 80 的话有点少。

    毕竟谁没几个大显示器啊
    scriptB0y
        67
    scriptB0y  
       2017-04-20 23:30:01 +08:00
    @XDDD 为什么? diff 应该只是追加的内容吧?
    dtysky
        68
    dtysky  
       2017-04-20 23:49:00 +08:00 via Android
    你们都不用 lint 么……
    liuqhang
        69
    liuqhang  
       2017-04-21 00:20:40 +08:00
    我还在坚持 80 ,因为我用 vim 写代码。超过了之后开 2 个窗口时就非常难受。
    libook
        70
    libook  
       2017-04-21 00:23:30 +08:00
    历史原因好多人都已经讲了。

    我从一个比较独特的角度说一下吧:
    显示器对于人来说通常是两种需求,一种是看图形,另一种是看文字。
    看图形的话,最重要的视野,之前有研究说人双眼最佳视觉范围是一个 16:9 的长方形,如果显示器是这个比例,又与人眼有特定的距离的话,画面正好与最佳视野重合,体验最佳,而看视频打游戏的这些需求有着可观的市场,于是乎显示器也朝着这种比例发展。
    看文字的话,人们普遍更加习惯纸质书本的比例:左右短,上下长。因为每一段在绝大多情况下都不是满行结束的,会留下空白,上述比例可以很好地减少这种空白,使得文本更加饱满,节省纸张。而写代码恰好就是读写文字的过程,和读写文字的习惯相同,纸质书本的比例可能会让人在写代码的时候觉得更习惯一些。

    个人认为长度适中就好;一方面让绝大多数语句能够在一行内写完,另一方面也要提升屏幕空间的利用率;这样在代码相对饱满的情况下可以把字放大到足够舒适的程度;也可以很方便地一屏双开。

    综上所述,鄙人认为看视频就应该用横屏 16:9 的显示器看,写代码就应该是竖屏 16:10 ,代码每行字符数根据所用语言和业务特点综合评估。
    shihira
        71
    shihira  
       2017-04-21 01:00:12 +08:00
    用的 vim ,开三列,第一列 22 个字符(刚好开个 NerdTree 和 Tagbar ),第二列和第三列 80 个字符,刚好占满整个屏幕。当然了你字体大小 DPI 分辨率不同情况也不同,仅供参考。
    WildCat
        72
    WildCat  
       2017-04-21 01:12:20 +08:00
    ObjetiveC : 呵呵。
    WildCat
        73
    WildCat  
       2017-04-21 01:12:39 +08:00
    哦我错了, oc 方法可以换行
    DioV
        74
    DioV  
       2017-04-21 01:17:05 +08:00
    反正我用的 GoogleStyle , 100 字符换行
    tywtyw2002
        75
    tywtyw2002  
       2017-04-21 06:23:51 +08:00
    c, python 都是按照 79 去写。 VIM 一句 set co=79

    LUA 80 也没啥问题。

    java 忘了 80 吧。
    js ,当我没说。
    zhuangtongfa
        76
    zhuangtongfa  
       2017-04-21 09:13:35 +08:00
    @bianhua 居然不装. vue 代码高亮插件
    Ixizi
        77
    Ixizi  
       2017-04-21 09:14:07 +08:00
    python 有 80 限制, PEP8 会报 E501 !!!

    然后我很烦,就把 E501 屏蔽了。

    qtmd 80.
    Lucups
        78
    Lucups  
       2017-04-21 09:22:52 +08:00
    @bleaker 这让我想到火车轨道宽度与两千年前的两匹马屁股宽度的关系。。。

    http://finance.qq.com/a/20120918/005637.htm
    billion
        79
    billion  
       2017-04-21 09:38:11 +08:00
    规范是 120 个字符,
    80 个字符是风格。
    我是坚持不超过 120 个字符。
    zachgenius
        80
    zachgenius  
       2017-04-21 09:54:03 +08:00
    反正 iMac 全屏打开编译器, 俩显示器, 大概 200+到 300+个字符??
    spark
        81
    spark  
       2017-04-21 10:06:54 +08:00
    minimap 开他有啥用? 还不如开 tagbar 来的实际.
    Bluecoda
        82
    Bluecoda  
       2017-04-21 10:24:14 +08:00
    80 是以前的 4:3 屏幕,现在 16:9 ,我开到 120 个字符。看屏幕来的,也不一定就定死 80
    lifeiccl
        83
    lifeiccl  
       2017-04-21 10:31:02 +08:00
    个人习惯问题, OC ,基本都在 80 以内的
    yuuko
        84
    yuuko  
       2017-04-21 10:34:01 +08:00 via Android
    js 100
    qian19876025
        85
    qian19876025  
       2017-04-21 10:37:12 +08:00
    超过了 120 你们看着不累么?
    weegc
        86
    weegc  
       2017-04-21 10:38:28 +08:00
    php 一般 80 ,不超过 120
    tausi0661
        87
    tausi0661  
       2017-04-21 10:49:37 +08:00
    @jarlyyn 手贱想点开看看 96 字符的函数名是啥...啥叫函数命名啊啥叫函数命名啊啥叫函数命名啊???
    ps 可以参数换行...
    jeneser
        88
    jeneser  
       2017-04-21 10:51:43 +08:00 via Android
    Javascript , node ,一般 80 ,所有代码尽收眼底,不累......
    jarlyyn
        89
    jarlyyn  
       2017-04-21 10:54:10 +08:00
    @tausi0661

    恩,我表达的有点歧义
    eqing
        90
    eqing  
       2017-04-21 11:11:11 +08:00
    php 一般 80 不超过 120
    bianhua
        91
    bianhua  
       2017-04-21 15:35:37 +08:00
    @zhuangtongfa 原生态编程 LOL
    @jarlyyn 你不但表达歧义,上面的帖分明在抬我的杠嘛 LOL
    jarlyyn
        92
    jarlyyn  
       2017-04-21 16:55:15 +08:00
    @bianhua

    就是看了你的图才去看了下我的 csrf 组件……
    Totato5749
        93
    Totato5749  
       2017-04-21 16:59:10 +08:00
    idea 里面 Code Style 设置下有个 wrap on typing ,当快到那条线的时候自动给你换行
    bianhua
        94
    bianhua  
       2017-04-21 18:17:58 +08:00
    @jarlyyn 然而分明我用的就是 80/行的限制啊,代码看起来也不是很乱。

    事实上如果就 Golang 来说,如果不偷懒的话,感觉 80/行大部分情况应该够用了。

    其实行数这种东西不止影响自己,有的时候代码会被别人阅读(比如在 Review 系统里或者下载到本地或者在 GitHub 上看),很多 Review 系统的设计对太长的行并不友好(因为会新旧两个版本并排然后 Diff )。

    所以我觉得写代码在不影响整洁性和可视性的情况下,每行的字符数应该越少越好。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     917 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 21:36 PVG 05:36 LAX 14:36 JFK 17:36
    Do have faith in what you're doing.
    ubao 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