为什么写出好的代码是如此之难? 为什么经过了这么多年的努力,有这么多的最佳实践/工具/方法学 (例如:瀑布式开发,迭代开发,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. Nat. Commun | 结合二维深度神经网络和迁移学习 预测RNA二级结构
  2. ubuntu下tftp的安装、配置、使用
  3. 【线上圆桌】视频会议下半场
  4. 第八届蓝桥杯决赛题之平方十位数
  5. 基于Java毕业设计智慧后勤系统源码+系统+mysql+lw文档+部署软件
  6. ContextCapture与Pix4D生成正射影像并进行拼接修图(附航测练习数据下载)
  7. html站点地图怎么做,如何制作网站地图,制作网站地图的步骤
  8. duilib加载资源
  9. Cholesky 分解,QR分解
  10. 【优化布局】基于粒子群算法求解带出入点的车间布局优化问题附matlab代码
  11. mysql 1236错误_mysql故障~Got fatal error 1236 解决方法
  12. matlab频率域滤波器,频率域滤波的MATLAB设计与实现_课程设计
  13. java 实现中文转化为拼音代码 汉字转化为拼音源码分享
  14. 单片机24秒倒计时c语言,单片机汇编语言24秒倒计时程序
  15. github invalid authentication data can't create token:scopes - [repo,gist] - note Intellif Plugin_1
  16. Python开发-- Lesson 1--Python介绍和入门(2016/07/23)
  17. 什么是 Workflow?
  18. 中学生作文指导杂志中学生作文指导杂志社中学生作文指导编辑部2022年第22期目录
  19. Mysql | MariDB | 导入导出数据库 | 常见问题 | ASCII ‘\0‘ appeared in the statement
  20. 计算机桌面右下角的图标不见了,图标,详细教您怎么解决右下角图标不见了的问题...

热门文章

  1. 快看漫画大数据平台的模型思维与用户增长实践
  2. 我的2018年终总结
  3. MySQL row_format引发的案例一则
  4. 微信公众号管理系统 RhaPHP1.2.5更新啦!
  5. Nagios安装部署与Cacti整合文档超精细版本
  6. intellij idea run configurations配置共享
  7. Spring Boot集成CKEditor
  8. Linux 中 7 个判断文件系统类型的方法
  9. 1.A+B Problem
  10. .Net程序猿玩转Android开发---(7)相对布局RelativeLayout