今天给大家翻译一篇由大名鼎鼎stackoverflow创始人写的:关于如何改善代码的12点建议。下面我们就来领略一下大牛见解。

一、Do you use source control?

源代码控制系统,说白了就是我们常用的SVN和Git。他们的重要性,博主就不多介绍了。想象一下,没有源代码控制系统,整个团队会发生事情:版本没办法控制、没办法回滚版本、没办法合并别人的代码,没办法查看冲突点,想想简直就是一场噩梦。

二、Can you make a build in one step?

代码开发完毕之后,需要部署到指定环境中,如果整个部署过程有非常多的步骤,都需要人为控制,这会消耗开发大量的精力,甚至会让他们感到烦躁。构建步骤越多,犯错误的几率就越大,所以我们需要具备一步构建的能力。

三、Do you make daily builds?

是否有进行每日构建?这个建议核心目的是为了防止开发提交错误代码或者代码提交不全,导致项目构建失败。如果每次提交代码之后,可以快速进行构建,就可以将构建结果反馈给开发人员,这样就不会耽误整个团队的进度了。

四、Do you have a bug database?

第四点相对小团队开发而言,可能不会去做,简单的来说就是将每次出现的bug,进行详细的记录并插入到数据库中,后面就可以对bug进行跟踪统计。

五、Do you fix bugs before writing new code?

这一点作者花了很大的篇幅来介绍,举了一个他在Windows工作的经历,因为需要紧急开发一个版本,然后出现bug的时候就放着,先开发需求去,导致开发需求的时候又出现新的bug,一直恶性循环。所以良好的方式应该是只要出现bug,第一时间就要进行修复,然后再进行功能开发。

例如竞争对手迭代了一个功能,抢走了你们公司大量的客户咨资源,这个时候你想快速迭代这个功能到版本中,进行紧急的版本发布,但是因为版本中存在大量的bug,导致没办法快速发布迭代,所以如果有bug,一定要在开发功能之前修复。

六、Do you have an up-to-date schedule?

你是否有最近的日程安排,作为程序猿,我们最喜欢的就是代码,如果没有外力作用的情况下,大多数不会制定未来的日程计划。但是站在公司商业角度,必须知道开发的最近的工作是什么,每天做什么事情,大概什么时候可以做完。这样既可以掌控全局进度,也可以督促程序猿高效的完成任务,而不是在摸鱼。。。

七、Do you have a spec?

第七点作者也是相当的重视,可能是实际遇到太多这样的问题,所以反复强调它的作用。在开发之前一定要有一个详细的文档说明,就比如我们中国软件项目开发流程,需要有类图、时序图、用例图、架构图、需求分析、部署图等等之类的文档说明,才可以进行具体的代码开发。

如果没开发代码之前,文档出现问题很容易修改,修改几个图或者描述就可以了,但是如果没有文档,后面发现问题,修改代码的话,那成本就非常大了。

八、Do programmers have quiet working conditions?

第八点作者也进行了着重的介绍,需要给程序猿提供一个良好的公办环境。要知道人集中精力进入到某种高效的状态中是很难的事情,可能需要十几分钟甚至个把小时,才会进入这个状态,但是退出这个状态却很容易,可能同事的一个问题就足够了。

这可能也是为什么大公司,那种顶尖的开发团队,公司办公环境特别好的原因。你想想要是开发和销售是在同一个房间中,天天在耳边打电话,我想别说集中注意力了,正常工作估计都很难完成,效率会严重折扣。

九、Do you use the best tools money can buy?

你能忍受电脑特别垃圾,运行一个服务得等几分钟的场面嘛,我想那个时候你可能会找小说或者找朋友唠嗑,很久之后才会回到电脑上面看是否执行完了。开发人员的工具是非常重要的,小到影响开发效率,大到影响工作情绪。

如果能用酷炫的开发设备来留住程序猿,何乐而不为呢?

十、Do you have testers?

这一点相比大部分公司应该都具备,团队当中是否有测试人员。专业的事情就应该交给专业的人来做,以前可能开发就是全栈,测试、开发、前端都一个人搞了,但是这样的人并不多,大多数人还是都某种技能比较擅长,没办法做到全栈。

作者给我们举了一个很有意思的例子,开发每天1000,测试每天300,你舍得拿1000工资的人去干300的事情嘛?

十一、Do new candidates write code during their interview?

面试的时候是否让候选人手敲代码?很多大公司都会对这一项进行考察,比如在线编程解决实际的算法题之类的,一方面是考察程序猿逻辑思维能力,另一方面就是考察实际开发能力。

外国人有时候很幽默,文章中举了一个让人哭笑不得的例子,你结婚的时候会找一个都没有承接过婚姻的酒店来作为婚礼现场嘛,其实核心就是不想找一个只会背面试题,没有实际工作经验的人加入团队中来。

十二、Do you do hallway usability testing?

最后一点大家可能比较陌生,博主看的时候也是一脸蒙蔽,特别震惊。简单的意会就是:你开发完一个功能之后,自己测试一遍之后,去hallway上面拉一个人过来接着检查,如果能连续拉5个以上的开发检查,没有发现任何问题,那这个功能就基本不会有什么大毛病。

感觉在中国这点比较难实现,毕竟没有几个人愿意,坐下来认认真真的看你代码。

大佬的文采比我好多了,英语不够给力,可能没办法表达出作者的精髓,有兴趣的同学可以阅读原文。

原文链接: https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/

-----------------------

公众号:林老师带你学编程

网站:www.wolzq.com

代码无非增删改查,关注老师给你Coding

林老师带你学编程:http://www.wolzq.com

12 Steps to Better Code【改善代码的12步】相关推荐

  1. [翻译Joel On Software]Joel测试:12步写出更高质量代码/The Joel Test: 12 Steps to Better Code

    Joel on Software The Joel Test: 12 Steps to Better Code Joel测试:12步写出更高质量代码 byJoel Spolsky Wednesday, ...

  2. 改善代码设计 —— 组织好你的数“.NET研究”据(Composing Data)

    系列博客 1. 改善代码设计 -- 优化函数的构成(Composing Methods) 2. 改善代码设计 -- 优化物件之间的特性(Moving Features Between Objects) ...

  3. Web 设计:实现干净代码的12条定律

    漂亮的代码是漂亮网站的基础,优秀的 CSS 只存在与同样优秀的 HTML 之上,干净的,语义的 HTML 代码让一个网站更健壮.本文讲述了12个实现干净 Web 设计代码的定律,适合于任何从事 Web ...

  4. 让你最快速地改善代码质量的 20 条编程规范

    根据学习部分极客时间 <设计模式之美>专栏 (王争 前Google工程师)和<阿里 java 规范>整理总结. 分别介绍编码规范的三个部分:命名与注释(Naming and C ...

  5. Windows下LaTeX安装及使用,使用VS Code改善LaTeX编辑环境

    1. 下载LaTeX并安装 从清华镜像站 https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/ 下载texlive.iso ...

  6. 从 Google Code 迁移代码到 GitHub 上

    从Google Code迁移代码到github上的步骤: 首先访问 https://github.com/nirvdrum/svn2git 安装svn2git工具. 创建一个空白目录,进入该目录执行 ...

  7. 《Clean Code》代码的整洁之道(一)

    <代码整洁之道>:细节之中自有天地,整洁成就卓越代码 概述 软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认.<代 ...

  8. 改善代码设计 —— 简化条件表达式(Simplifying Conditional Expressions)

    系列博客 1. 改善代码设计 -- 优化函数的构成(Composing Methods) 2. 改善代码设计 -- 优化物件之间的特性(Moving Features Between Objects) ...

  9. 改善代码设计 —— 总结篇(Summary)

    系列博客 1. 改善代码设计 -- 优化函数的构成(Composing Methods) 2. 改善代码设计 -- 优化物件之间的特性(Moving Features Between Objects) ...

最新文章

  1. C# Math.Round中国式的四舍五入法
  2. 【django】创建django项目工程
  3. 上海国际区块链赋能传统产业峰会-王伟:道道人才链启动
  4. python querystring encode_Java UriUtils.encodeQueryParam方法代碼示例
  5. python中修改列表元素的方法
  6. What's New In DevTools (Chrome 59)来看看最新Chrome 59的开发者工具又有哪些新功能
  7. 服务降级-降级的概念
  8. Nginx整合tomcat,实现反向代理和负载均衡
  9. 递归求n的阶层算法实现
  10. 普朗克黑体辐射定律python代码实现
  11. C++新特性探究(9.1):functor仿函数探究
  12. Python 3 与 Javascript escape 传输确保数据正确方法和中文乱码解决方案
  13. C++的构造函数总结
  14. 斐波那契数列【java实现】
  15. 练习题|python常用模块
  16. lr压测mysql数据库_jmeter压测mysql数据库
  17. 弹出浮层css+JQuery
  18. MarkText常用快捷键
  19. 我的漫漫程序人生路(真诚的长文,慎点)
  20. 老徐小程序之小程序怎么选?

热门文章

  1. 原码、反码、补码之间的转换和简单运算
  2. Vue ElementUI 实现 Table 多列数据 checkBox选择框
  3. 计算机组成原理——乘法运算(一位乘)
  4. 百度回复针对目前相关性问题
  5. 怎么清洁计算机主机内部,机箱怎么防尘 机箱清灰步骤【教程】
  6. 崇闵摄影课·10款日常后期视频调色LUT 支持PR/达芬奇/FCPX
  7. 【BUUCTF刷题记录】[极客大挑战 2019] Http
  8. oracle绝对值求和,Oracle存储过程当中经常使用函数
  9. matlab曲面拟合的算法,Matlab三维节点拟合出平滑曲面,并求拟合曲面与底部投影形成的体积以及投影面积...
  10. 2019年上半年网络工程师上午真题及答案解析