竹磬网-邵珠庆の日记 生命只有一次,你可以用它来做些更多伟大的事情–Make the world a little better and easier


271月/150

Code Review 同行代码审查实战分析

发布在 邵珠庆

代码审查(Code Review)是软件开发中常用的手段,和QA测试相比,它更容易发现较难发现的问题,还可以帮助团队成员提高编程技能,统一编程风格等。本文作者从实际出发,详细分析了开发者在代码审查过程中会遇到的问题及解决方法。

以下为译文:

数百万年前,人类祖先人猿学会直立行走——解放双手——最终进化到人;而代码审查在开发过程中有着异曲同工之妙——区别出野蛮开发和先进开发。

然而,在实际工作中,以下声音总不绝于耳:

  1. “代码审查在项目中简直就是浪费时间!”
  2. “我根本没有时间去做复查。”
  3. “由于我那个谨慎的拍档还没做好复查,进度只能延后了。”
  4. “你确定,我的同事要求我修改代码吗?请向他们解释一下,任何轻微地改动都会让我的代码失去原有的优雅。”

那么问题来了,我们为什么需要做代码复查?

作为专业的软件开发人员,持续提高代码质量是工作生涯不断追求的目标之一。无论我们有多么优秀,都离不开团队;而代码复查是个人与团队的润滑剂:

  • 当局者迷,旁观者清。代码复查如同为我们安装了后视镜;
  • 使我们的代码多了至少一个知音人;
  • 能帮助新员工在这个过程中学习和领悟到前辈的代码精髓;
  • 有助开展知识共享,众“智”成城。

要做就要做到最好

如果想要达成上述种种美好结果,是离不开时间和工作的科学安排的。仅仅做好代码缩进、变量命名规范等基本工作,还不能算得上完美。而如果曾经尝试过结对编程,或许你会发现其所花的时间往往都比代码复查要多。

我的建议是用开长总时长的四分之一时间来进行代码复查。举例来说,如果开发总用时为两天,那么应该花上大约四个小时来进行复查。

当然,如果能把事情做对,可不必拘泥于时间的多少。进一步说,我们必须能看明白将要复查的代码。这不仅代表要掌握基本的语言语法,更关键的是要掌握整个代码的架构,所用组件或库等细节。如果不能做到对每一行代码所做的事情都了然于胸,这样的复查工作是没有多少价值的。所以要做好这点是不能一味讲求速度的,必须花一番功夫来从头到尾对代码进行梳理分析。

此外还有两件事是务必要做到的:

  1. 复查工作中包含所有必须的测试工作;
  2. 做好设计文档的编写工作。

避免拖延症

今天的工作今天完成是最完美的工作状态,否则一旦拖延症出现,再多再好的复查都只会成为开发过程中的绊脚石。好的复查需要紧密而持久的努力,不是搞搞突击就能做好的。

因此,开发者应当尽力做到日清日结。把复查作为每天工作的开端是个不错的主意;理清旧的思路将有助于开展新的编码任务。也或许有的人喜欢在午休或下班前进行,无论在什么时候进行,以下几点是应该避免的:

  • 让积压工作越积越多;
  • 由于复查没有做好而导致进度延后;
  • 由于代码更新频率快就放弃做复查;
  • 往往在最后一刻才去做复查。

编写出可复查的代码

不应该把所有复查工作都推给复查员。如果我的同事花了一周时间添加了看起来比较乱的代码,这对复查工作无疑是重大打击,也很难让人摸清其思路和结构。

所以我们在编程时,要有意识地把代码划分为可操作单元。我们使用的方法是scrum,它为我们的开发工作做了很明晰的指导,同时使得整个开发过程有迹可循,便于进行追溯和回顾。

其次,在与复查员进行讨论前要搞好关系。这样将有助于双方对彼此有所了解,从而减少讨论时矛盾发生的机率。

再者,项目结构应当在设计文档中描述得清楚具体。这对于项目新成员的成长是大有裨益的,同时能帮助复查员提高工作效率。

最后也是最重要的一点是在自我复查过程中做好注释。换言之要先自行对代码过一遍,把需要做出说明的地方标示出来并解释清楚。有研究表明,开发者在对自己的进行复查和注释时,经常会找出不少瑕疵。

大型代码重构

有时候如果需要进行代码重构,这势必会影响到很多组件,特别是较大型的应用。在这种情况下,最好的解决方案是逐步推进重构工作。先对要做的变更进行划分,然后根据修改意图进行分段式重构。当这部分变更完成并做好复查后,再执行第二部分的重构,重复该步骤直至完成全部工作。这或许增加了重构用时,但会带来更高质量的代码同时可以减轻复查员的工作量。

如果实际情况真的不允许进行逐步重构,可以试试结对编程。

解决矛盾

在一个技术团队中,各人有各自的观点,如何达成共识是成败的关键。作为开发者,应该保持开明的心态并虚心接受不同的意见。避免固步自封,避免对自我复查工作的不屑一顾。如果有人提议把我们一些重复的代码做成一个可复用函数,这并不代表我们之前的工作是毫无价值的。

而作为复查员,要懂得人情世故。在给出修改意见前,先考虑清楚这真的会更好抑或仅仅是风格上的不同看法。提议说法可以是:“如果尝试另一种方法,或许会更好”或“有同事建议这样做”,而要避免的是:“就连我家宠物都能写出比这好的算法!”

如果真的一时僵持不下,争议双方不妨请教第三个开发人员,从他的角度来再次审度各自的观点,直到形成共识,三人行,必有我师焉。

227月/118

网站运营实战经验解析

发布在 邵珠庆

 

 不知不觉自己从事网站运营已有几年了!因为一直都是自己创业,在期间随着自己的见解对网站运营做了不少尝试,形成自己一套独特理论和方法,也积累了不好的或者好的经验。今天趁美好心情记录下来,以便日后在经营管理以及策略运用上的借鉴!以我多年的网站运营经验给大家从网站策划、设计、编辑、优化和推广,营销分六大系列祥细解析,加上一些特殊绝招也献丑一下。

网站策划是整体流程开始之一。网站定位,域名的构思选择,俗话说得好域名选择得好就成功了一半了!不停完善对用户有帮助功能和栏目。制定可行性推广方案和销售方案。这两者可以决定网站的价值,所以要特别重视。一开始我们的网站选择域名和网名很不确实,改来改去至少改了三次域名和网名,导致搜索引擎收录反感。搜索引擎是机器人,可不像人一样灵活性;再有用户习惯突然又换,用户心中对网站大大打折扣。从中可见我们做网站之前策划工作很不到位!

设计在网站运营占位置也是很重要的。衡量一个网站好不好,内行人看综合,外行人只看设计,网站设计是给人第一印象。当时我们的网站是商业性的网站,主色是灰,头部是黄色。知识库做得比较简约,用户看文章舒服,我记得赢得不少用户喜欢和赞赏。

现在都说网站运营中内容为王,编辑对用户有帮助的数据。有数据才是硬道理,有了数据量才有流量。我们网站在统计系统试过,看到一篇文章从搜索引擎主关键词和散关键词进来加起来有1万多个IP,尝到意想不到的效果。虽然编辑工作比较轻松,简单复制和粘帖,这只是简单编辑人员。为了从搜索引擎免费带来IP,一般我们都原创的,自己常写一些用户喜欢的文章。自己写不过来时候,到网上找一些培训老师合作,让他们写的文章都发布到网站去。我们在网站上免费帮他们做个专栏,他们得到宣传,我们得到原创文章,有利于搜索引擎收录、提高排名和流量,这样子一来资源共享,对大家都有好处!

相信懂互联网的人都知道SEO优化。SEO是一种利用搜索引擎的搜索规则来提高网站在有关搜索引擎内的排名的方式,让自己的网站在搜索引擎排名靠前带来更多的自然流量。但做好SEO真的是很让人头疼的事情,其实把网站排名做上来需要的是时间、方法和技巧。技术方面得一定要注意遵守SEO的规则,如果不遵守的话,网站早晚会被搜索引擎给K掉,所以凡事都要招规矩办事。我们做优化一般站内部优化和站外部优化。内部优化主要做URL规划、关键词布局、代码精简、权重传递、内链建设、标题、关键词、描述等等,外部优化主要通过博客、论坛、栏目合作、分类信息等等渠道做锚文字外链。必须花大量的时间去做这些事情,特别是关键词定夺,严格根据用户对这类网站的搜索习惯,围绕网站的营销目的,两者结合的制定核心关键词。前期还做了网络调查,收集些用户对这类网站的需求和搜索方式,来定夺关键词。

网站做得再美若不推广,没有任何人浏览,网站就失去价值得了。网站推广任务重大,网站推广方法方式有很多,有收费和免费的!因为我们还是创业阶段没有太多资金投资,所以只采取常用免费网络推广方法,例如:搜索引擎推广,博客推广,邮件群发推广,QQ群,论坛社区发帖,攒写软文宣传等。

商务平台日IP上了3-5万IP后的赢利模式一般常见:一:收会员费,二:广告费。我们到达了这个数后,进行网络营销策略和网站使用分析。前期提倡战略是:广告投放,竞价排名,大客户合作。我们的商机是各行各业,广告投放可分首页和类别投放。竞价排名利用积分系统控制,积分越多商机信息就越靠前,积分不多又想商机排名靠前只有购买积分。大客户合作就是费用比较高,整站广告形式展示,暴光就越高。盈利模式我们以后将不断挖掘的!。

这几年技术朋友配合我,让我运营网站很轻松。他们技术扎实加上服务器安全性高,放心根据自己制定运营指标一步步完成。运营一个网站需要一个完美团队,都说:“没有完美的个人,只有完美的团队!”总结了不少自己的经验,当然,这些都只是很粗浅的一些观念与导引!相信网络公司也运用得上,其余领域也可一体适用。