GeekTop
  • 首页
  • 关于

GeekTop

不止代码

如何写出简洁优雅的代码

如何写出简洁优雅的代码

2016年9月10日 Alex Comments 2 comments

最近在看一个项目的代码,心里有点激动。关于如何写代码,有点想法。看到那些没有章法,随意而为的代码,浑身感到不舒服。

我想骂脏话的时候

这段时间一直在处理一个遗留的代码库,每天看着前辈们给我挖下的坑,心里想骂脏话。
简单来讲,主要有以下几个方面的问题:

  1. 很多模块的代码在 3000 行以上,有几个甚至达到 6000 行,当然和下面的问题比起来这根本不算什么问题;
  2. 很多方法代码量都在 200 行以上,有的甚至达到 500 行,很多地方写的及其累赘,比不小学生作文的水平,很多方法都是可以拆分复用的,当然和下面的问题问题比起来,这可能也不算什么问题;
  3. 极其随意的变量命名规则: 类似于a, b, c,x, y, z 和 v1, v2, v3 这些变量名随处可见,基本上这里的规则就是没有规则;
  4. 事实上和这一条比起来上面的都不是问题!没有注释,没有文档,大多数东西基本上靠猜。95% 以上的方法没有注释,将近 99% 的模型字段没有注释。

上面的这些现象会导致什么问题呢?改一个简单的问题,需要浪费大量的时间去调试相关的代码,还有可能影响正常的功能,因为代码的耦合度是在太高了。听说他们已经打算放弃这个项目,重写一套。

一群人写代码,如何让代码可控

如果不对代码做出控制,随着时间的推移,肯定会变成一个代码怪兽,没有人敢碰。

  1. 一个团队进行开发,必须要确立一套规范,大家都需要准守;
  2. 每次升级都需要 review 一下代码,这也是一个团队共同学习的机会;
  3. 文档一定要跟上,不然后期很难去维护,别人在短时间内也很难知道你具体做了什么事情。

我任务做好上面的 3 条基本上就可以写出健壮、可控的代码。

效率和质量哪个更重要

虽然愿景是好的,但是不一定做得到。这里也没有什么代码评审,现在的基本情况是只要代码可以运行,不报错就可以,基本上不要求代码的质量。

这也是我感到痛苦的原因。


编程
Python

Post navigation

NEXT
无锡.江阴之行
PREVIOUS
Python 中的 deepcopy 和 copy

2 thoughts on “如何写出简洁优雅的代码”

  1. 张志亮说道:
    2018年12月11日 上午1:47

    Star!

    回复
  2. ǝɔɐǝԀʎzɐɹϽ说道:
    2022年6月21日 上午9:58

    向你的主管要工作量,用于整理代码。
    也就是说,这个工作对业务没有产出,就是为了整理代码。

    建议先从变量规范命名开始,因为改变量名理论上不影响代码逻辑。(除非有不同命令空间的变量用了同样的 a b c x y z)
    除了走读代码,必要时还可以走访老员工,咨询代码历史。

    之后整理代码目前的结构和流程文档。到函数(过程)就行了,不用到伪代码。

    然后根据文档决策是完全重写,还是在此基础上重构。

    回复

发表回复 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

最近文章

  • 姥姥
  • 设计一个可扩展的用户模型
  • 使用 Apple 的 Keychain 保存 SSH 的 passphase
  • 解决 ABA 问题
  • 关于 macOS 上面部分 emoji 无法显示的问题
  • 这些年我技术栈的变化
  • 搬瓦工、狗云、hostodo、oracle对比测试
  • Google Drive 无法上传文件
  • 使用 socks5 代理 git ssh 协议
  • 到底要不要“润”
  • 可复用的代码
  • 关于疫情的一点点反思
  • 我的风控策略(投资篇)
  • 我的风控策略(生活篇)
  • Spring Boot是如何处理异常的
  • 编码与解码
  • 基于统计的图像目标检索
  • 有限状态机和状态模式
  • API安全设计
  • 用户密码的存储策略

近期评论

  • ǝɔɐǝԀʎzɐɹϽ发表在《可复用的代码》
  • Alex发表在《可复用的代码》
  • ǝɔɐǝԀʎzɐɹϽ发表在《到底要不要“润”》
  • ǝɔɐǝԀʎzɐɹϽ发表在《可复用的代码》
  • ǝɔɐǝԀʎzɐɹϽ发表在《我的风控策略(生活篇)》
  • ǝɔɐǝԀʎzɐɹϽ发表在《如何写出简洁优雅的代码》
  • 张志亮发表在《如何写出简洁优雅的代码》

分类

  • AI (2)
  • Java应用安全之道 (1)
    • 加密与解密 (1)
  • Odoo (2)
  • Python (1)
  • 图像处理 (1)
  • 年鉴 (1)
  • 数据库 (10)
  • 编程 (14)
    • Spring (1)
  • 读书笔记 (2)
  • 运维 (5)
  • 随笔 (10)

归档

  • 2023年1月 (2)
  • 2022年8月 (1)
  • 2022年7月 (4)
  • 2022年6月 (2)
  • 2022年5月 (2)
  • 2022年4月 (3)
  • 2021年10月 (1)
  • 2021年7月 (1)
  • 2021年5月 (1)
  • 2020年11月 (1)
  • 2020年7月 (1)
  • 2020年3月 (2)
  • 2020年2月 (1)
  • 2019年1月 (1)
  • 2018年12月 (2)
  • 2018年11月 (2)
  • 2017年4月 (1)
  • 2016年11月 (1)
  • 2016年9月 (1)
  • 2016年7月 (1)
  • 2016年5月 (3)
  • 2016年4月 (2)
  • 2016年3月 (1)
  • 2016年2月 (2)
  • 2015年12月 (1)
  • 2015年11月 (2)
  • 2015年8月 (1)
  • 2015年4月 (1)
  • 2015年3月 (1)

标签

Database devops Java MySQL PostgreSQL Python shell Spring SpringBoot Spring Security 安全 年鉴 总结 编程 随笔
© 2015-2023   Geektop.net All Rights Reserved.