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

如何才能写出高质量代码?

  •  
  •   TheSpectre · May 31, 2018 · 5872 views
    This topic created in 3085 days ago, the information mentioned may be changed or developed.

    最近在公司写一些业务代码,功能虽然实现了,但是感觉自己写的代码很乱,过几天再去看可能自己都看不懂了更别说别人去看你的代码。各位有什么建议

    34 replies  •  2018-06-01 11:14:21 +08:00
    darylc
    darylc
    May 31, 2018
    1
    公司代码有要求吧,比如我和外面的人做开源项目,代码怎么写,文件怎么放都是有严格的要求的
    eroko
    eroko
    May 31, 2018
    2
    为了防止自己忘,多写点注释呗
    qsnow6
    qsnow6
    May 31, 2018 via iPhone
    3
    多写点垃圾代码
    TheSpectre
    TheSpectre
    OP
    May 31, 2018
    4
    @qsnow6 别秀了
    TheSpectre
    TheSpectre
    OP
    May 31, 2018
    5
    @susecjh 好多都是之前留下来的坑,现在一个一个补
    darylc
    darylc
    May 31, 2018
    6
    没有代码审查吗
    lamada
    lamada
    May 31, 2018
    7
    写注释
    recall704
    recall704
    May 31, 2018
    8
    重构
    Immortal
    Immortal
    May 31, 2018❤️1
    9
    写代码和写作文没差别 都是写完一遍遍的在修改 慢慢才会使得整个项目质量提高
    大佬和菜鸡的区别只是在于大佬写完后需要改的次数少,菜鸡的多而已
    boris1993
    boris1993
    May 31, 2018 via Android
    10
    多写注释
    去看看各种最佳实践
    kslr
    kslr
    May 31, 2018 via Android
    11
    不停的重构,晚上思考下业务逻辑优化。
    likuku
    likuku
    May 31, 2018
    12
    单元测试+重构,循环往复。
    yanaraika
    yanaraika
    May 31, 2018
    13
    无他,唯手熟尔
    Pyjamas
    Pyjamas
    May 31, 2018
    14
    感觉自己写的代码很乱,可是到底是哪里乱呢,为什么乱呢,你觉得清晰的代码应该是什么样的
    zdcin
    zdcin
    May 31, 2018❤️1
    15
    最小作用域
    方法,属性,局部变量的作用域设定都应该遵守这个原则。
    作用域越小影响的范围越小,出错的可能性越小。
    对于应该设为私有的模块方法,模块变量,类方法,类变量,要加前下划线,但不要有后下划线,避免与语言内置的方法和变量冲突。
    模块化
    不要将代码过于集中,避免一个文件过度膨胀
    减少副作用
    无副作用是指一个方法执行过程中和执行之后都不会改变外部环境,无副作用的方法任何时候调用,只要输入确定,输出就不会改变。线程安全问题就是因为副作用引起的,有副作用的方法越少,程序越简单,越不容易出错。
    使用合理的数据结构
    list,set,dict,queue 都有自己的特点,要根据算法特点使用合适的数据结构,比如从一些名字中找重名,就不该用 list,而是用 set。
    yuanxj1024
    yuanxj1024
    May 31, 2018
    16
    尽量函数化,保证函数单一职责的原则,每个函数代码行数都不多,加上合理的函数命名,消灭大块代码
    wupher
    wupher
    May 31, 2018
    17
    多写

    多看别人写

    多让别人看你写
    tujin
    tujin
    May 31, 2018
    18
    写注释
    ben1024
    ben1024
    May 31, 2018
    19
    多写
    noNOno
    noNOno
    May 31, 2018❤️2
    20
    TheSpectre
    TheSpectre
    OP
    May 31, 2018
    21
    @noNOno 谢谢
    kinghui
    kinghui
    May 31, 2018
    22
    把下面基本书多撸几遍

    - 《程序员修炼之道:从小工到专家》
    - 《重构:改善既有代码的设计》
    - 《代码大全》
    - 《代码整洁之道》
    - 《设计模式》
    kinghui
    kinghui
    May 31, 2018
    23
    《代码整洁之道》里有提过,如果代码需要注释那就说明代码表达力不够,而且注释很容易不跟随代码更新从而误导读者(有可能是你自己)。如果你要为某段代码添加注释那么就应该考虑是不是应该换个名字或使用更加富有表达力的代码,如提取到单独的方法并起个好名称。
    cxbig
    cxbig
    May 31, 2018
    24
    多写多练
    备注写清楚就不会忘记代码是干什么的
    至于结构的规划,是写一个方法做所有的事情还是写一堆可重用的库、应用层只做配置和调用,全凭经验积累。
    Foolt
    Foolt
    May 31, 2018
    25
    @kinghui 表达力再好,几万行的项目里不可能没有注释,尤其是补丁类代码,不写注释后人翻半天才知道你这到底干嘛用,这种情况下阅读代码比翻阅屎山还恶心。
    Foolt
    Foolt
    May 31, 2018
    26
    最重要的是按编程规范写,PHP 比较流行的编程规范是 PSR 规范;
    其次是鼓励冗长的命名,避免用缩写,如果非要缩写一定要在注释写出完整名称;
    最后是不要忘了写注释,注释又长又臭没关系,不影响工作进度就可以。
    night98
    night98
    May 31, 2018
    27
    @kinghui #23 要么变量名全称,否则不用注释真的看起来很难受,尤其类似 redis 缓存命名这种,不看注释你都只能靠猜。
    page470075640
    page470075640
    May 31, 2018 via Android
    28
    一颗迭代的心
    qloog
    qloog
    May 31, 2018
    29
    命名一定要有意义,这样后期看起来就不那么费解了。
    monkeylyf
    monkeylyf
    May 31, 2018
    30
    追求美
    misaka19000
    misaka19000
    May 31, 2018
    31
    重构,多思考,把组件按模块进行划分
    woscaizi
    woscaizi
    May 31, 2018 via iPhone
    32
    如果时间允许,多次重构。
    kinghui
    kinghui
    Jun 1, 2018
    33
    @Foolt
    @night98
    并不是说不要注释,意思是加注释是最后的办法,要先考虑有没有更好的表达方式,应该把加注释作为最后的选择而不是第一选择,每次把每次加注释都看作是承认代码表达力的失败而作出的妥协。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1097 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 119ms · UTC 18:23 · PVG 02:23 · LAX 10:23 · JFK 13:23
    ♥ Do have faith in what you're doing.