如何写出更优雅的代码。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容 #Wrapper { background-color: #e2e2e2; background-image: url("/static/img/shadow_light.png"), url("//cdn.v2ex.com/assets/bgs/circuit.png"); background-repeat: repeat-x, repeat-x; } #Wrapper.Night { background-color: #1f2e3d; background-image: url("/static/img/shadow.png"), url("//cdn.v2ex.com/assets/bgs/circuit_night.png"); background-repeat: repeat-x, repeat-x; background-size: 20px 20px, 162.5px 162.5px; }
kaiger
V2EX    程序员

如何写出更优雅的代码。

  •  
  •   kaiger 2022-09-16 09:52:51 +08:00 8752 次点击
    这是一个创建于 1170 天前的主题,其中的信息可能已经有所发展或是发生改变。

    what the code, is it shit ?

    今天看到这样一句话,觉得很符合我目前写的代码。

    想请教一下,如何写出让自己看了觉得不是 shit 的代码。

    61 条回复    2022-09-18 00:37:15 +08:00
    BeijingBaby
        1
    BeijingBaby  
       2022-09-16 09:54:44 +08:00   1
    自己很难评判,但别人 code review 的时候,说脏话的次数,决定了代码质量。
    kaiger
        2
    kaiger  
    OP
       2022-09-16 09:58:10 +08:00
    @BeijingBaby #1

    自己 code review ,说脏话的次数也可以看出代码的质量 [dog]
    cmdOptionKana
        3
    cmdOptionKana  
       2022-09-16 10:04:59 +08:00
    还能如何,学算法、学编程模式、多看优秀开源代码、多练手,来来去去就是这些基本的方法。
    williamjing
        4
    williamjing  
       2022-09-16 10:09:36 +08:00
    无他,唯手熟尔。 -- 卖油翁
    多学别人最佳实践,并且基础是否牢固,决定了程序员的职业高度。
    www5070504
        5
    www5070504  
       2022-09-16 10:12:47 +08:00
    注释的质量也很重要 注释写的垃的看着脏话更多
    taowen
        6
    taowen  
       2022-09-16 10:15:34 +08:00
    https://zhuanlan.zhihu.com/p/34982747 如何提高代码的可读性
    T0m008
        7
    T0m008  
       2022-09-16 10:17:34 +08:00   19
    写代码的时候翘起你的小拇指
    catinsides
        8
    catinsides  
       2022-09-16 10:20:51 +08:00
    zhenwang
        9
    zhenwang  
       2022-09-16 10:22:55 +08:00   2
    我现在的做法就是多看一些别人的代码,因为有的时候,优雅的代码是需要一定的风格的,可以参考别人的风格。
    zhouyg
        10
    zhouyg  
       2022-09-16 10:24:08 +08:00
    首先定义什么是“优雅”
    nba2k9
        11
    nba2k9  
       2022-09-16 10:25:06 +08:00
    最重要的就是选一个好看的主题和字体
    kaf
        12
    kaf  
       2022-09-16 10:25:28 +08:00
    写的时候多想想设计模式
    hambers
        13
    hambers  
       2022-09-16 10:29:54 +08:00   2
    首先,得有一个“正常”的产品经理?
    studycode
        14
    studycode  
       2022-09-16 10:30:17 +08:00
    @w4ngzhen 一般在哪里看优秀代码?
    runningman
        15
    runningman  
       2022-09-16 10:31:14 +08:00
    写出赚钱的 code 就行
    popn74
        16
    popn74  
       2022-09-16 10:31:50 +08:00   1
    尽量简洁易维护的设计,完成复杂的功能
    kooze
        17
    kooze  
       2022-09-16 10:33:43 +08:00
    干掉那个产品经理
    weeevv
        18
    weeevv  
       2022-09-16 11:03:28 +08:00
    rust ,函数式。
    yaphets666
        19
    yaphets666  
       2022-09-16 11:04:11 +08:00
    代码的优雅其实是最次要的,代码最重要的是人可以看得懂,看不懂就坏了
    weeevv
        20
    weeevv  
       2022-09-16 11:18:31 +08:00
    @weeevv 但也不是适用所有场合。
    shanyuguangyun
        21
    shanyuguangyun  
       2022-09-16 11:28:26 +08:00
    桌面上放杯红酒
    HugoChao
        22
    HugoChao &nbp;
       2022-09-16 11:42:16 +08:00
    代码大全这本书蛮不错的,可以看看
    jack778
        23
    jack778  
       2022-09-16 12:26:36 +08:00
    不管什么方法,里面的代码行数不能超过 30 行,类的行数不能超过 500 行
    meeop
        24
    meeop  
       2022-09-16 13:24:21 +08:00
    1 对优雅给出量化标准
    无非是:性能好,代码量低,逻辑清晰整洁,扩展性强这些
    不可兼得

    2 针对量化标准度量,然后迭代直到无可迭代
    比如要性能,计量下现在的耗时,耗 cpu,耗内存
    优化到无法再降低,就是你力所能及的优雅了



    实际上这是个伪命题,一般意义的优雅标准每个人都不一样,想做的优雅一点无非是针对上述指标做的超过平均水平就行,但这么做毫无意义

    不要过早优化

    把时间用来学习,追妹子,做收益大的项目更好
    lian3204321
        25
    lian3204321  
       2022-09-16 13:28:48 +08:00
    为啥要优雅,bug 多点,维护的人员还能多点。除了做自己项目。
    busln
        26
    busln  
       2022-09-16 13:31:18 +08:00
    烂代码往往都有个共同点:过段时间,连自己都看不懂。
    cosmosz
        27
    cosmosz  
       2022-09-16 13:41:42 +08:00
    - 多用 static code analysis tools, linter 之类的。给你报错的时候 读一读为啥。
    - 写测试。code 质量越低 测试也越难写。
    Leviathann
        28
    Leviathann  
       2022-09-16 13:48:36 +08:00
    @jack778 那有 50 个字段要赋值怎么办?
    chocotan
        29
    chocotan  
       2022-09-16 13:51:23 +08:00   1
    我有个朋友做过几期视频
    [ [优雅编程-01] 初始化 Gradle 工程,引入单元测试-哔哩哔哩] https://b23.tv/yNrPqm8
    不过他已经鸽了好久了
    1gYezi
        30
    1gYezi  
       2022-09-16 13:59:11 +08:00
    可读性、维护性、扩展性
    TWorldIsNButThis
        31
    TWorldIsNButThis  
       2022-09-16 14:11:21 +08:00 via iPhone
    @chocotan wow
    这个我当时追的津津有味,每期不落
    学到了很多现代 Javaweb 的工程实践
    Tianqi
        32
    Tianqi  
       2022-09-16 14:25:35 +08:00
    可以看看 Clean Code 和 Code Complete 这两本书
    zbatman
        33
    zbatman  
       2022-09-16 14:38:41 +08:00
    建议不看其他人的代码,然后认为自己的代码是最优雅的
    dhq
        34
    dhq  
       2022-09-16 15:07:56 +08:00
    不写
    Daiwf
        35
    Daiwf  
       2022-09-16 15:11:18 +08:00
    太优雅不行,要写的别人看不懂。就不会被裁员了。写的太优雅,接你的项目分分钟。那肯定先裁你。而且你写的代码都不出 bug ,领导也记不住你。觉得你干的活太 low.
    QKgf555H87Fp0cth
        36
    QKgf555H87Fp0cth  
       2022-09-16 15:12:46 +08:00
    如果连格式化都没有,那肯定是 shit 。-- 鲁迅
    fo0o7hU2tr6v6TCe
        37
    fo0o7hU2tr6v6TCe  
       2022-09-16 15:31:30 +08:00
    先成为一个优雅的人,比如说从酒精灯烧咖啡开始
    newSimpleLife
        38
    newSimpleLife  
       2022-09-16 15:31:58 +08:00
    我不知道如何一下写出最好的 我只知道我会尽力每次优化 思考 一直慢慢写出来好看的代码
    xz410236056
        39
    xz410236056  
       2022-09-16 15:49:16 +08:00
    穿西装写
    johnnyleaf
        40
    johnnyleaf  
       2022-09-16 16:02:29 +08:00   2
    允许复杂的定义,但不允许复杂的调用
    alen0206
        41
    alen0206  
       2022-09-16 16:25:31 +08:00
    简洁,易懂,拓展性,高内聚,低耦合
    to2false
        42
    to2false  
       2022-09-16 17:13:55 +08:00
    当你修改的时候发现不爽的地方,总结该如何避免
    leegradyllljjjj
        43
    leegradyllljjjj  
       2022-09-16 17:18:44 +08:00
    能产生更多达不溜的代码就是“优雅”的代码
    lysS
        44
    lysS  
       2022-09-16 17:25:59 +08:00
    不要过度设计
    binge921
        46
    binge921  
       2022-09-16 17:33:45 +08:00
    先成为优雅的人
    jiangbao888
        47
    jiangbao888  
       2022-09-16 18:29:02 +08:00
    @T0m008 试了一下, 影响敲回车键啊
    jones2000
        48
    jones2000  
       2022-09-16 22:03:33 +08:00
    不停的重构, 直到自己感觉“优雅” 就可以了, 毕竟自己写的代码也就自己看看,其他人一般也不会看, 除非交接的时候。
    nojsja
        49
    nojsja  
       2022-09-16 22:04:56 +08:00
    《 Code Complete 》
    securityCoding
        50
    securityCoding  
       2022-09-16 22:12:05 +08:00   1
    多看看明星开源项目源码,可读性排第一,不要瞎几把封装
    cxbig
        51
    cxbig  
       2022-09-16 23:11:36 +08:00
    多写。遵守语言基本的格式规范。
    当下不过度纠结、能跑就行。经验增长了,代码自然越来越好。
    ffgrinder
        52
    ffgrinder  
       202-09-17 00:29:43 +08:00
    @securityCoding #49 我也想说,python 好多玩意都是从开源的库里面学会的。
    zhuweiyou
        53
    zhuweiyou  
       2022-09-17 00:35:08 +08:00
    我感觉可维护更重要,至于什么命名注释那些都是小问题.
    hackpro
        54
    hackpro  
       2022-09-17 00:40:23 +08:00 via iPhone
    @BeijingBaby #1 那可不一定
    当年看 effective c++和 more effective c++的时候 卧槽原来是这样 卧槽还能这样
    qiumaoyuan
        55
    qiumaoyuan  
       2022-09-17 00:51:44 +08:00 via Android
    消除重复,花精力命名,完。
    Suntz
        56
    Suntz  
       2022-09-17 09:42:23 +08:00
    简单
    GiantHard
        57
    GiantHard  
       2022-09-17 10:07:16 +08:00
    不可测试的代码肯定比容易测试的代码更加 shit ,所以建议使用 TDD
    Asimov01
        58
    Asimov01  
       2022-09-17 11:36:55 +08:00
    我非常喜欢和推崇阮一峰先生的看法:Write solid/simple/stupid code.
    james504
        59
    james504  
       2022-09-17 14:16:13 +08:00 via Android
    学好语文,
    学好逻辑,
    简单不复杂,
    不瞎看别人的代码,
    遵循规范不为了 X X 而 X X 。
    someonedeng
        60
    someonedeng  
       2022-09-17 20:31:58 +08:00
    质朴可读的代码挺重要
    alexmy
        61
    alexmy  
       2022-09-18 00:37:15 +08:00
    过一个月,三个月再看看,会不会觉得当初应该这么写,不应该那么写。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2566 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 04:21 PVG 12:21 LAX 20:21 JFK 23:21
    Do have faith in what you're doing.
    ubao msn 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