代码中的注释

我第一个实习的公司,是一个美资公司,在印度设立研发中心可能都已经有超过10年的经验了,那时候一些前辈们告诉我,印度人写的代码可能不如中国人那么聪明,但是他们的注释实在是非常详细,有时候甚至达到了1:1的比例,试想想,100行代码就有100行注释,这是多么的恐怖啊。

经常听到会有人抱怨道,怎么这段代码没有注释啊,这是为什么这样写的啊,如此云云。仿佛没有注释,这个世界就不转了。类似的事情也经常发生在QA们的身边,只不过注释换成了文档。

刚毕业的时候做白盒测试,现在回想起来,那时候的我测试的代码大部分都是不包含注释的,不过我测试起来并没有太大的困难,总结一下,应该有以下几点原因:

  1. 有意义的函数名、变量名。函数的命名让人一看就大概知道在做什么,例如PostBlog就是发布一篇博客,如果遇到一个叫SaveProfile的方法但做的却是加好友,那我想再多的注释我也会头晕
  2. 代码不会说谎。根据经验,如果一段代码理解起来很费劲,那么通常里面都会隐藏着问题。代码就是最好的注释,一些过时的注释,设置会对阅读代码的人产生误导
  3. 充分的沟通。虽然游走于几个项目组,跟不同的开发人员打交道,但是每当遇到问题的时候总会主动跟相关的人沟通,一个活生生的人坐在那里不问,却迷信什么文档,这真是本末倒置

注释,能不写就别写,实在要写,写WHY而不是WHAT。

联系一下最近在Team内写的一个新的回归测试工具,里面基本没有注释,希望过几个月以后,自己还能够看看代码就知道当时那段代码为什么这样写。

单元测试的坏味道

Martin Fowler有一本很出名的书《重构》,里面有个很出名的概念,Code Smell。前阵子我也刚发现一本很好的书,《XUnit Test Patterns》。这本书主要讲的是如何重构测试代码,这里的测试代码指的就是自动化测试的代码,再进一步细化就是单元测试为主的自动化测试代码的重构。由于此书已经让清华大学翻译烂了……所以建议大家下载英文版。

所谓的测试的坏味道,有三种:

  1. 项目(Project)
  2. 行为(Behavior)
  3. 代码(Code)

按照《重构》书中提出的坏味道的概念来看,如果说是有坏味道(Smell),那么大多数都是指代码级别的。什么的坏味道?就是程序有可能会有大问题的一种征兆(symptom)。个人理解就是不能被直接观察到的现象,可以称之为坏味道。

对于自动化测试代码来说,如果有了项目级的坏味道,通常变现就是生产环境出现了BUG。如果出现这样的情况,那么自动化测试代码就不是有味道那么简单了,而是有问题了,自动化测试的安全网没有能够抓住这个BUG。
Continue reading “单元测试的坏味道”

认证和授权的区别 Authentication vs. Authorization

简单来说,认证(Authentication )是用来回答以下问题:

  • 用户是谁
  • 当前用户是否真的是他所代表的角色

通常来说,一个登陆系统,就是一个认证的系统。

那么授权(Authorization)又是什么呢?授权通常是用来回答以下问题:

  • 用户A是否被授权访问资源R
  • 用户A是否被授权执行P操作

常见的例如密码相册那些应用,就是应用到了授权系统。