为什么写出好的代码是如此之难? 为什么经过了这么多年的努力,有这么多的最佳实践/工具/方法学 (例如:瀑布式开发,迭代开发,Scrum , XP, 单元测试,TDD,持续集成,UML,Code Review ,IDEA, Eclipse......  这个名单可以非常长),我们还是无法创造高质量的软件?

有市场的原因,需求的原因,工期的原因,也有程序员的原因。

Bozhidar Bozhanov 在他的文章《7 QUESTIONS TO ASK YOURSELF ABOUT YOUR CODE》 (点击阅读原文可查看)提出了7个问题,我觉得很有价值, 我把他翻译了一下,分享给大家:

1. 代码是正确的吗?  

是不是实现了规格说明书中的需求?如果没有规格说明书,你自己是不是付出了足够的努力来找出软件期待的行为, 并且把它测试了一遍? --- 最好是自动的,至少也得有手工的测试。

2. 代码是完整的吗?

不管你的需求文档中写没写,你的代码是不是仔细考虑了边界条件? 很多边界条件都是技术相关的:连接断开,内存不足,硬盘已满等等。

3. 代码是安全的吗?

它是不是遵循了安全的最佳实践,是否验证了输入数据,防止了数据注入? 它是否经过了对已知攻击的安全测试? 安全当然不仅仅是代码, 但是代码的确可以引入不少安全漏洞。

4. 代码是可读、可维护的吗?

其他人是不是可以轻松地理解你写的代码? 有没有适当的注释来描述一小部分代码在一个大场景中的位置?有没有把代码拆分成小的,可以读的单元。

5. 代码是可以扩展的吗?

代码是否允许添加新的功能而不破坏老的代码? 是不是参数化的,或者可以配置的? 有没有使用恰当的设计模式来支持扩展?

6. 代码是不是高效的?

在高负荷下能否工作正常?  是否避免了一次性读入大量数据到内存中,是否适当地使用了异步的处理?

7.  有没有一些让你可以自豪的地方?

你觉得你的代码会让你很自豪,还是说你想把它藏起来不让别人看到?

大部分的代码都是平凡的,不是光芒四射的,但是你的代码是不是展示了一些比较好的实践?你是否愿意把他放到GitHub上去?

其实这些问题不仅仅要在提交代码之前思考,在Code Review的时候也完全可以借鉴。

高质量的软件依赖很多因素,程序员可以说是最重要的一环。我觉得经常问问自己这些问题并且采取行动,你最终会变得与众不同。

提交代码前问自己七个问题!相关推荐

  1. 你提交代码前没有校验?巧用gitHooks解决

    大家好,我是若川.最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.已进行四个月了,很多小伙伴表示收获颇丰. 想学源码,极力推荐订 ...

  2. 提交代码前没有用svn st命令(只用了svn diff), 差点踩坑!

    我还是建议大家在Windows上通过对比工具来提交程序, Windows上一切可见, 一目了然啊. 文件状态用颜色区分得一清二楚. 当然, 有的时候, 我们也可以在linux下提交程序. 最近我直接在 ...

  3. git提交代码会报 vue-cli-service lint found some errors. Please fix them and try committing again

    转载:https://blog.csdn.net/j15533415886/article/details/92003047 转载:https://blog.csdn.net/qq_42180156/ ...

  4. git提交代码报 vue-cli-service lint found some errors. Please fix them and try committing again

    原因: 问过度娘在提交代码的时候,它会在提交代码前运行做代码风格检查,如果代码不符合相应规则,则报错. 解决: 直接把pre-commit文件删除,进入项目.git文件夹-hooks-删除 .如何你的 ...

  5. 用Prettier和ESlint来统一提交代码

    2019独角兽企业重金招聘Python工程师标准>>> 为什么使用 很遗憾,JavaScript没有官方的代码风格.业界有一些流行的代码风格,比如Airbnb和Standard.使用 ...

  6. git clone 某次提交前代码_git提交代码常用命令

    1.在网页上fork中心仓到自己私有仓 2.本地clone自己的私有仓:git clone 自己的私有仓地址 3.本地添加中心仓分支地址: git remote add upstream ssh:// ...

  7. 25,000,000行的代码就问你敢不敢动?!

    你经历过绝望吗? 近日,Hacker News 上发起了一个名为"你见过最糟糕的代码是什么?"(https://news.ycombinator.com/item?id=18442 ...

  8. GIT 这么好用,为什么还是有人不知道怎么用它提交代码?

    客户端代码管理工具的变迁: 从 SVN 到 GIT 截止目前,新版的 APICloud Studio 2 仍然处于公测期.APICloud Studio 2 的代码管理客户端,由 SVN 改为了 GI ...

  9. 25,000,000 行的代码就问你敢不敢动?!

    导读:你经历过绝望吗? 前一段时间,Hacker News 上发起了一个名为"你见过最糟糕的代码是什么?"的话题,引发了无数网友回忆讨论,甚至还再次让软件巨头 Oracle 登上头 ...

最新文章

  1. Hyperledger Fabric SDK Go构建第一个应用
  2. Spring JDBC整合
  3. .NET Core中使用结果过滤器ResultFilter统一结果返回封装
  4. 计算机检测维修与数据恢复课件,2017年全国职业院校技能大赛中职组“计算机检测维修与数据恢复”赛项说明会ppt课件.ppt...
  5. mysql脚本解读_一篇很好的关于mysqld_safe脚本源码解读的文章,收藏了!!
  6. java keytool nginx_java 自签名证书转 nginx 所需证书
  7. Word2019 mac 16.46beta更新(兼容big sur,适配M1)
  8. 多线程导出excel高并发_怎么理解分布式、高并发、多线程
  9. 51单片机入门教程(5)——定时器中断
  10. NGINX 笔记 - GeoIP 限制策略配置
  11. 【明解C语言】之函数详解《上篇》
  12. 读《因果的真相》第八、九章摘抄笔记
  13. Juniper防火墙之ICMP-Ping
  14. 关于对游戏帧率的学习
  15. Antd Vue 表单生成快速开发指南,内附强大的表单设计器
  16. 程序猿生存指南-22 分手快乐
  17. Java WEB开发须知知识点---基础篇
  18. python是开源的跨平台编程语言_Python是一种跨平台、开源、免费的动态编程语言。...
  19. DELL EqualLogic PS4000服务器硬盘坏道修复过程
  20. 【经历】苹果企业账号申请记录,比想象中要简单

热门文章

  1. linux使用nginx负载udp
  2. SSH服务如何远程管理RHEL 5
  3. Spring学习笔记八--Bean生命周期和后置处理器
  4. Android 从清单配置文件元数据中获取值
  5. 矩阵的特征值、特征向量及其代码求解实现
  6. 基于脆弱水印的图像篡改检测实现
  7. ffmpeg 从mp4上提取H264的nalu
  8. 最全面详细讲解Oracle入门
  9. C语言内存管理-字符数组与字符指针
  10. OpenCV3特征提取与目标检测之HOG(二)——使用官方的行人分类器实现行人检测