两个关于代码行数的故事:徒手码代码的体验



1.jpg

作者:tinyfool 

原本是在知乎回答一个问题《徒手码一千行以上代码是一种怎样的体验?》,这是我的答案: 

代码不都是徒手写的么?1000行很容易达到的。07-08年春节前夕的时候,我们的客户问我们能不能给他们做一个搜索,我没有学过搜索,但是看过一些科普的文章,自己研究过一点思路。我事先知道Lucene,知道它是基于Java的。 

我出门买了本Lucene in Action和Java语言的入门书,然后就回家过年了。春节假期7天,我女朋友和父母在打牌看电视,我在另外一个屋子,看这两本书和写一个基于Lucene的搜索系统,我设计了一个XML的出入协议,索引的导入格式用XML,我写了一个Java版本的web server作为系统的底层,查询用REST形式返回XML的结果,一个配置目录里面用配置文件设置查询字段,排序字段,自带索引整理,切换不同的查询方法,只需要在url选择不同的配置文件名即可,带简单日志。 

7天的时间,写完了2000-3000行的代码。然后节后就给我们的客户上线测试,一启用,就把它们原来的搜索速度从高峰的时候几分钟没有结果,变成稳定在几十毫秒内。他们的日搜索量因为用这套搜索,从日4000增至8000,后来增至10万。 

在他们搜索量20-30万后,这套代码才做了第一次大改进,性能提升到百万级。后来我们接入了更多的客户,这套代码不断改进,最高单机支撑2000万次搜索。后来几经改进,代码增至1万8000以上。后来,我就没关注过行数了。 

这套代码发展出来的系统,曾经服务于,饭统网、大众点评、FTChinese、六间房、盛大云中书城,以及我们公司当年几十个小客户。日最高搜索在3000万左右,应该至少完成了几亿次搜索。 

(我职业生涯中写过大小上百个业余的side project,大多数没有发布,大多数行数都在3000行以上。) 

既然有人点赞,再讲一个故事。我们上海泰尼现在还没倒闭,靠的是一套排版系统,我们从底层支持苹果iBook Author的格式,这是一个非常复杂的打包格式,类似于网页,但是有大量网页不支持的排版格式和CSS3标准的东西。12年,我们公司快到穷途末路的时候,我突然有个疯狂的主意,要做这个非常复杂的东西。但是我跟我们的主程,也就是现在的CTO老师 @陈勇辉 老师说了这个idea,这个猪头听不懂。 

于是我在出差去做演讲的三天路上,写了一个原型,实现了一个XML DOM解析树,一个简易的CSS解析树,写了一个简单的iBook Author的格式分析文档,利用我分析出来的文件格式,写了一个可以显示某本iBook Author电子书一页的信息的一个Demo,刚才查了下代码库,大概不到900多行。 

交给主程看,给他讲解思路和文件格式的细节。然后第二天,他看懂了,然后这个项目的具体代码我就没有参与过了。这个项目现在大概有2万6000行左右。前后已经给公司赚了200万左右。公司没死因为这个项目。 

来源:tinyfool的简书


0