专栏首页PHP在线程序员如何做到「编程速度又快,Bug 数量又少」?

程序员如何做到「编程速度又快,Bug 数量又少」?

最近看到一个Quora中的回答,答到心坎上。译文引用自伯乐在线:

  三个程序员被要求穿过一片田地,到达另一侧的房子。

  菜鸟程序员目测了一下之间很短的距离,说:“不远!我只要十分钟。”

  资深程序员看了一眼田地,想了一会,说:“我应该能在一天内过去。”菜鸟程序员很惊讶。

  大神程序员看了一眼田地,说:“看起来要十分钟,但我觉得十五分钟应该够了。” 资深程序员冷笑了一声。

  菜鸟程序员出发了,但只过了一会,地雷爆炸了,炸出了巨大的洞。这下他必须偏移预定的路线,原路返回,反复尝试穿过田地。最后他花了两天到达目的地,到的时候颤颤发抖,还受了伤。

  资深程序员一出发就匍匐前进,仔细地拍打地面,寻找地雷,只有在安全的时候才前进。他在一天的时间内小心谨慎地缓慢爬过了这片地,只触发了几个地雷。

  大神程序员出发之后径直穿过了田地,十分果断。他只用了十分钟就到了另一边。

  “你是怎么做到的?”另外两个人问道,“那些地雷怎么没有伤到你?”

  “很简单,”他回答道,“我最初就没有埋地雷。”

  地雷从何而来?

  与大神一起工作的时候就是这种感觉,也是我的第一印象「代码整洁而且没有地雷」。可是反过来想,为什么有的人就是习惯于埋雷呢?难道看不到后果吗? 再深一层来讲,没人愿意给自己埋地雷,主要还是没有对习惯引起重视。培养起好的编程习惯是非常重要的。编程中的坏习惯,是很多程序员上升的天花板,十年原 地踏步的原因。想要写出好代码,一定要常常问自己「我还能做的更好吗?」(好吧,这是算法课的口号)。只有想不断提升的人,才会注意去扣各种各样的细节, 使得自己做得比前一次好。下面总结一下,常见的「地雷」有哪些:

  没有提前构建

  没有规划完整系统的生命周期,内存泄露到处都是。

  系统没有设计好,存在不少重复功能的类。

  系统的行为没有定义好,接口设计不完整,写了创建不写删除。

  没有重视代码的可读性

  代码没有经过提炼,到处都是重复代码,改一个功能常常要改很多处代码。

  缺少抽象,将具体实现暴露得到处都是。比如一个状态机在外部设置它的状态切换。

  代码没有紧贴语义。

  没有重视开发效率

  到处都是繁杂重复的配置项,通过约定可以省去很多配置。

  很多中间代码,比如解析xml、解析协议等等的工作,通过元编程可以将这些中间工作自动化。

  没有重视数据

  数据没有处理好,敏感数据要保护好,比如角色的属性,到处都是直接赋值的话,很容易出错,要把直接改变限制在少数的某几个函数里。

  某些系统知道得太多,比如数据层就不应该知道显示层的东西,显示和数据掺杂在一起。

  数据依赖于代码,比如写在C++的模板里面,没有为数据设计序列化文件。

  更深层的原因

  “我不是什么伟大的程序员,我只是一个有着很多好习惯的程序员”—-Kent Beck

  在《程序员修炼之道》里,第一条就是「关心你的技艺」。如果你不在乎能否漂亮地开发出软件,你又如何要耗费生命去开发软件呢?

本文分享自微信公众号 - php(phpdaily)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-12-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 优秀的程序员的七个特质

    优秀的程序员的七个特质 从技术层面来讲,和我工作过的程序员良莠不齐。之前和优秀程序员搭档使我非常轻松,不禁使我思考一个问题:优秀的程序员都有那些特质?或者...

    wangxl
  • 程序员到底是一个什么职业?

    [导读] 反思技术圈的造神现象,作者写下对程序员这个职业的理解。他认为,程序员首先是雇员、然后是工程师;比起创造力,工程能力对这个职位更为重要。本文权转载自新...

    wangxl
  • 如何判断自己是否具有成为一名优秀程序员的潜质

    原文出处: Joshua Kemp 译文出处:vaikan 很多像这样的日子,当地上积起厚厚的雪时,我通常会燃起铁炉,把马蹄跌烧的通红,搓搓温暖的手,开始打...

    wangxl
  • 作为一个会写代码的人,觉得自己最酷是什么时候?

    从入行到现在代码已经十几年了,加入编程行业还是因为自己的一点小兴趣,程序员每个阶段的需求点是不一样的,所以让自己很兴奋的事情也会不相同。刚开始入行阶段,能够用代...

    程序员互动联盟
  • 清明节加班最多,近三成码农用两种及以上语言编程,这是15000名中国码农的日常

    这份白皮书由国内智能编程机器人公司 aiXcoder (www.aixcoder.com)联合机器之心发布。aiXcoder 是利用智能化技术进行「程序代码的自...

    机器之心
  • Java程序员的五个职业发展方向

    其实很多程序员走到这个阶段已经在做软件设计师工作了。这是绝大多数程序员发展的必经之路。因为,程序员在编程序的时候,一方面会实现设计的功能,另一方 面 也在对设计...

    java架构师
  • 在二线城市上班的程序员和在一线城市上班的程序员同样工作几年后,会有什么差距?

    作为一个在一线城市工作了十几年的老程序员,现在在三线城市混日子,程序员水平高低和在什么城市没有太直接的关系,这个问题的本质来讲一个程序员水平高低和环境因素到底差...

    程序员互动联盟
  • 新程序员:哥,这个功能怎么实现?老程序员:请仔细动脑动手!

    在一个软件开发团队中,总是会新老程序员一起搭配,几个老程序员带领新程序员一起干。而在开发过程中有些新程序员犯的低级问题有时会让老程序员忍俊不禁,或者甚至上火。不...

    一墨编程学习
  • 中国的程序员是世界最牛的程序员

    一直觉得中国的程序员想法多,肯钻研肯学习,但却不知道原来中国的程序员是世界上最牛的程序员。说来可能不信,但根据HackerRank官网的一篇报道,数据显示中国的...

    企鹅号小编
  • 如何成为一名成功的程序员

    编程是一个仅靠兴趣仍不足以抵达成功彼岸的领域。你必须充满激情,并且持之以恒地不断汲取更多有关编程的知识。只是对编程感兴趣还不足以功成名就——众所周知,我们工作起...

    哲洛不闹

扫码关注云+社区

领取腾讯云代金券