您当前的位置:网站首页>注册会计师,代码重构!你敢吗?,剃头匠

注册会计师,代码重构!你敢吗?,剃头匠

2019-05-06 05:43:36 投稿作者:admin 围观人数:282 评论人数:0次


今日叙述一个代码重构的阅历。


2014年,我从根底架构部分,转调到事务部分。技能负责人想让我搞定事务体系的安稳性问题。


其时的事务体系的确存在不少问题,不过我初来乍到,对全体体系注册会计师,代码重构!你敢吗?,剪发匠不了解,就想在了解一段时刻后再着手。没想到,后边是作业自己找上了门。


那是一个周六的早上,我其时不在广州,而是去了深圳,去一个同学家。其时跟我同学聊的尽兴,就一向没看手机,距离了一个多小时后,我翻开微信一开,作业群里有几百个未读。看到咱们技能负责人的头像一向在闪烁,就意识到应该是出大问题了。


本来,是一个中心的事务体系出了一个bug, 影响到了一个重要的商户。


他们原意是给一个用户推送一条特定音讯,音讯里网大面还包含了注册会计师,代码重构!你敢吗?,剪发匠一些隐尿毒症是怎样引起的私信息。不巧,一个新来的同学由于一个新的需求,修正了那部分的代码,引入了一个bug , 导致本来是发个一个特定用户的信息,发给了一堆人。


商注册会计师,代码重构!你敢吗?,剪发匠户适当不满,后来是部分的公关出头,才将作业停息下来,司理那儿也由于这个作业,拉咱们到办公室批了一顿。


技能负责人也压力山pola大。咱们几个人,在会议室里评论了好久,终究咱们都觉得假如要比较好的根绝此类的问题,除了要加强各种测验等方法外,还有一个,便是要重构现有的代码。


由于这个体系是最中心的事务体系之一,并且几经转手,其时的代码现已变得极难保护,里边各种if else 的分支,还有长达一千行一个的苹果商铺函数,注释不全,文档也缺乏,要想长时刻的保护下去,这个技能债对错归还不行了。


咱们面面相觑,尽管知道重构是最好的解决计划,但咱们都不想搞呀。


后来,我考虑到,初来这儿仍是要做些作业才干得到咱们认可的,就硬着头皮,把重构的这个使命给接了下来。



承认重构的规模



接下这个使命后,我和项目组苍井空冰桶湿身的成员就开端剖析这个体系。


发现这个体系的事务流程很长,触及到几十个子体系(微服务),还依靠几个外部分的服务。假如悉数正月十五夜重构下来,估量一年都做不完,并且危险极大,重构一年的体系,然后再上线,谁敢呀,并且到那时,说不定黄花菜都凉了。


觉得这样必定不行。


咱们就从头梳理了一遍,把整个美观的道德体系区分成了三个部分,咱们发现中心部分的修正最频频,出问题的频率也最大,玥玥児就决议先重构中心流程部分的代码。


项目规划部分,咱们对项目进行了分期,中心部分的重构作为第一期,其他两部分能够作为二期,三期项目来做。一个是能够极大地削减压力,使得的作业愈加简单掌握,另一个是距离一段时刻有产出也能给团队带来决心。



规划好验证的方法



当注册会计师,代码重构!你敢吗?,剪发匠承认好重构的规模后,接下来的作业,便是要考虑怎么来验证重构后的代码了。


这个是重构代码最重要注册会计师,代码重构!你敢吗?,剪发匠的一个部分,伤寒假如没方法验证重构代码的正确性,你是不敢上线的,就算硬上了,也会睡不好觉。


一般重构代码的验证,能够选用测验代码,测验用例掩盖的方法。(这部分能够参阅 《重构》)。但咱们发现,咱们要重构的这个部分,不能选用这种方法来验证。


由于事务逻辑很杂乱,并且涉安奈儿及到太多的外围体系,一个是测验用例很难掩盖全面,别的一个是没有方法能够很好的阻隔鱼香肉丝做法外部体系的依靠。


咱们剖析了整个体系,发现这个体系的功用是,承受商户过来一个恳求,然后进行各种权限,人物等的判别,再依据各个参数去各个依靠体系拉取数据,终究组装出一个新的包,再把这个新的包发送到近邻部分的下流体系。


后来,咱们想了双流程验证的计划。


咱们将重构部分的代码,悉数封装起来,然后供给一个新的接赵荀口,一个恳求进来后,咱们别离履行我的网友是女鬼旧的事务逻辑,也将恳求发给新接口。在流程的终究,咱们将新旧流程构造出的字段,进行逐一字段的比照。新流程只验证正确性,iphone6splus不做实践的输出。


为了确保验证的作用,验证要在线上进行,所以还要再结合后边的灰度流程。



尽悉数极力,搞清重构代码的逻辑



当咱们承认注册会计师,代码重构!你敢吗?,剪发匠好验证方法后,接下来便是正式的作业了,重构代码。重写代码自身是不难的,但遇到的费事是,几乎没有文档,注释也很少,经过看代码仅仅搞懂了百分之五十左右的逻辑,还有一大部分的逻辑,无法理清楚。


后来,咱们想到一个方法,把代码版别办理体系的log 悉数拉出来。经过log咱们找到了各部分逻辑不明晰的代码的负责人,然后一个一个的去跟他们聊,跟他们讨教。命运好的是,大部分的人员都还在,中心还跟产品司理聊了不少,总算,把整个的逻辑搞懂了百分之九十几。


由于有了上面的双流程验证和下面灰度逻辑,咱们觉得,能够开端上线验证了。



灰度,一定要灰度



接下来,就要开端咱们的灰度验证流程了。由于毛病的影响很大,所以咱们灰度的特别当心。


咱们内部有灰度体系,但内部体系的灰度粒度比较大,为了稳妥咱们需求更小粒度的灰度,所以咱们自己写了灰度的逻辑代码,故宫灵异作业直接嵌入到了体系里边。


一开端的时分,极度当心,几乎是一个商户,一个商户灰度的。灰度完后,咱们每距离一段时刻,就剖析一遍lo夏虫不行语冰g和监控,看看有没有躲藏的问题。


终究,咱们的确在这个灰度的进程中,发现了不少的问题,不过由于触及的用户很少,都没有造成大的影响。


这种极小规模的灰度,大约继续了一周左右的时刻,后边渐渐加快了灰度的速度。大约花了一个月的时刻,掩盖了悉数的用户。


中心进程,几乎没有呈现什么大的问题,能够说是比较成功的一次重构。丑女大翻身



操控好各方预期



终究一个点,跟技能无关,是关于相关人员的预期,包含上级的预期,同级的预期,部属的预期。


我其时知道这个项目有难度,自己心里也没底,所以跟上级说去试一试,后来谈成能够在进程承受两次中等毛病。当然终究成果比预期好,没有一次中等毛病,只有过两次小毛病。


同级这块,也是跟咱们说,极力去试试,不过的确不是很有掌握,也算是下降了他们的预期。


关于下面的兄弟,我是跟咱们说,这是一注册会计师,代码重构!你敢吗?,剪发匠件能够安定咱们团队位置的作业,拼死也要拿下这一仗。后银河证券面咱们都很同心,一同完成了这个在其时看来挺难的一个使命。


这个战略,是我第一年作业的时分,我导师告诉我的,内紧外松。这样外面临你的预期是比较低,内部却很拼命的做,终究的成果,往往比较简单超出咱们的预期。


我觉得这是一个很好的战略。



结语



终究,咱们顺利完成了这次的重构使命,也做出了咱们在新团队的影响力。后边再来回忆,发现咱们做对了不少的作业。没有一上来就开干,由于决心缺乏,反而是当心翼翼,也由于决心不太足,在不断的下降外界的预期,终究一步一步,紧遵流程,获得了不错的成果。




引荐阅览:

我的996

怎么成为一名优异的架构师

自学架构规划的一个好方千山万壑总是情法

一行代码引发的惊骇



你好,我是大飞。十年互联网人,资深架构师,技能leader。

假如你喜欢我的文章,就给大众号加个星标吧,便利阅览。


the end
二胡世界,还原一个真实的音乐世界