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

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

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

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

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

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

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

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

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

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

    函数命名就 96 个字符了

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

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

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

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

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

    LUA 80 也没啥问题。

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

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

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

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

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

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

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

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

    所以我觉得写代码在不影响整洁性和可视性的情况下,每行的字符数应该越少越好。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   2925 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.0 · 21ms · UTC 03:42 · PVG 11:42 · LAX 20:42 · JFK 23:42
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1