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

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

  •  
  •   blakejia · 2017-04-20 12:24:25 +08:00 · 15705 次点击
    这是一个创建于 2555 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    使用 idea 开发 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 开了插件查 碰到同事代码会忍不住扳回来
    Humorce
        37
    Humorce  
       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  
       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   ·   我们的愿景   ·   实用小工具   ·   985 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 20:05 · PVG 04:05 · LAX 13:05 · JFK 16:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.