`
wenjinglian
  • 浏览: 817819 次
  • 性别: Icon_minigender_1
  • 来自: 株洲->深圳
社区版块
存档分类
最新评论

请注释你那该死的代码

阅读更多

每次我遇到一个程序员——有时是相当高水的——总发现他会认为:你并不需要给你的代码加注释。我要说,这就是胡说八道。我很长时间以来一直这么表达。问题是,让事情改变要比你想象的难。虽然我们正处在努力编写那些讨厌的代码、准备发布一些会令人惊叹的新东西的紧要关头,我们仍然几乎注释所有的东西。没有任何借口不去做这些事情。每隔3到7行代码,你就能看到有长篇的社论发表。有时,几百行代码里,你就能找到一个很好的笑话。

错误的藏身之处

看,一个是你想要的,一个是你实现的。你的bug就在这两者之间。如果写了注释,你就是在告诉我你想要的。而你的代码中告诉我你是如何去做的。程序的缺陷要么存在于你想要的想法中,要么,需求是对的,而你的代码有问题。请帮助我,让我知道究竟是哪个错了。

不要偷懒

一个常见的反对声音是:我听说,注释经常会过期,因为代码会经常更新,而注释不会。你不更新注释吗?你的同事也不?不要偷懒,不要养成一个让人认为偷点儿懒无所谓的文化氛围。告诉同事你是如何一丝不苟的注释程序的,让他们知道你也希望他们这样去做。说不注释是因为怕某人或某些地方在将来会造成你的错误,这只是在找借口。

你是有经验的人

人本无知,这很自然,但你是有经验的人。因此,你有义务教育那些需要学习的人。你的注释会指导那些正在阅读你的代码的人。告诉他们为什么在这里要用Tuple数据结构,而不是用其它的(更好的做法是附加一个stack overflow或dotnetperls上的链接 … 你完全可以做到这些,不是吗?)你在这走了一个什么捷径?如果不走捷径你就不能按时发布,所以,告诉这些新手你遇到的特殊情况。否则的话,最终你的不好的代码将会被四处拷贝,四处散播。看!你写的烂代码变成了公司的程序模板!完全没有注释!

你会打字

我的招聘过程有一部分是白板编程,一部分是键盘编程。所有好的程序员都是打字高手。就说你每分钟能打出40-60词。那请你告诉我,为什么在你机枪扫射似的编写代码时不加上注释呢?当然,你可以花30秒时间告诉我,代码写的这样一团糟是因为搞业务的那个家伙需要程序在本周发布而换回不菲的7.5万美元。可是下个月呢?这些代码不要了?封存到石头里了?我知道这些代码是在干什么。但请告诉我你的意图

你在一天天变老

听我说,我编程已经很久了,也许早在你上中学之前。我仍然在编程,我仍然喜欢编程。有朝一日,你也会变的跟我一样老。如果你到了像我一样(那时我已经没有能力再教育你),那时,有太多的层,有太多的抽象,有太多的技术架构,你无法完全记住。你的注释就能出来指导你。它们会告诉你,6个月前,你是用这种方法、这种模式实现的,而且这样做只是为了炫耀。如果你是一个真正优秀——并且仍然在做编程的程序员——你会认识到,这些代码写的很烂,你现在需要以不同的方式重新实现它。而你仍然有你的注释来让你回忆起当时的想法和为什么这样做。

来源:外刊评论

[本文英文原文链接:Comment your damn code ]

 

分享到:
评论

相关推荐

    linux-0.11, linux 0.11研究linux内核的源代码.zip

    linux-0.11, linux 0.11研究linux内核的源代码 Linux-0.11 RTFSCLinus曾经...本代码中的注释99%都来源于赵炯老师的那本 linux-0.11源码完全注释,这么算的话,我好像只是一个搬运工。(不过搬运的过程经过了自己的手,

    wtfm:该死的手册在哪里? (好吧,让我们写一本精彩的手册)

    它允许将基于代码注释的自动生成的 API 与手写文本结合起来。 所以它对于有专门技术作家的团队很有用。 但是 sphinx 主要面向 Python,无法为 go 代码生成 API。 我喜欢 swagger 生成用于测试 HTTP 接口的实时 API...

    GACD_Project:这个该死的项目

    【标题】:“GACD_Project:这个该死的项目” 【描述】:“GACD_Project,这个该死的...在实际的项目开发中,良好的文档和注释是至关重要的,它们可以帮助团队成员理解项目结构,有效解决问题,并避免不必要的困扰。

    tinyhttpd_mirror:Tinyhttpd的可用性Linux版本,链接链接http

    适用于测试CGI时需要本机安装PERL,同时安装perl-cgi的镜像 准备 为Linux编译 To compile for Linux: 1) Comment out the #include <pthread> line. ...关于代码的一些细节解释,阅读该死的源代码。还有我的

    carlpapa:您想要的最好的该死的烹饪应用程序!!!!

    8. **测试和调试**:可能包含测试文件(如Jest或Mocha测试),以及源代码的注释和错误处理,便于维护和优化。 总体来说,“carlpapa”项目是一个基于JavaScript的烹饪应用程序,提供了一整套的烹饪体验,包括浏览...

    Damn Simple Classifieds:这是一个简单的脚本,可让您创建自己的清单。-开源

    我已尽力通过添加注释来使代码更清晰易读。 作为一个新手开发人员,在此脚本中还有很多要改进的地方。 这个脚本无处完美。 该死的简单分类广告是一个很小的开放源代码项目,它使您只需单击几下即可使用很少的编码...

    instead:改为这样做

    警告 此代码不完整 -- 项目构建并运行 (Android 4),但缺少功能、注释、单元测试等。 故事 我放弃了我的智能手机 2.5 年,这很棒。 然而,我很少给孩子们拍照,有时不得不借用我妻子的智能手机,这样我就可以把...

Global site tag (gtag.js) - Google Analytics