如何写出更好的代码(文末有福利)

女主宣言

我们在过去的几期推送里已经给大家介绍了笔者根据多年研发经验总结出来的编码规范和 git 等实用工具的运用场景,今天咱们就来继续聊聊项目开发过程的诸多方法论。本文最先发布于 7rule,转载已获取作者授权。

PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!

  640?wx_fmt=jpeg

The "Rope Mother" Margaret Hamilton

by NASA IOTD

这几期和大家分享了我自己在开发时的一些经验,这次想说说如何写出更好的代码。


1

目标

我们写代码,都是为了完成某个功能,为某个系统服务。我个人在这方面的目标是:要做出10年都能稳定运行的系统。


2

如何做

如果想做到这一点,我觉得最重要的是要做到从整体去看待问题,具体来说:


  1. 系统运行都需要哪些环境,如服务器、数据库、机房、网络等。

  2. 系统在运行时,会遇到哪些问题。

  3. 如何更好地设计系统,层次清晰。

  4. 代码清晰易懂。


3

系统运行时会遇到的问题

我经常听到某些编程同学说:这是个运维方面的问题,不需要我们做。但我认为恰恰相反,通常就是这些所谓的运维方面的问题,会决定你的系统是否能够稳定运行10年。


正是前几天,我和一个公司高级别的技术同学沟通,他的一个观点我特别的认同:真正评价一个系统好坏的标准,性能高低不是最重要的,可运维性才是。


这里先来说说我觉得需要掌握的运维知识:

运营商和机房

国内的运营商,最重要的就是电信和联通,这些年移动有所增加,但也还比不上前面两个。


按照我之前的经验,一个用户服务,6 - 7成的用户走电信线路,3成联通线路,其余各种小运营商线路。


那么你的服务如果想要用户体验好,至少需要部署在电信和联通两个线路的机房。


有人说,我们有多线机房。也可以啊,但是为了你的服务可靠性考虑,你也需要至少两个吧,否则一个挂了服务就全挂了。


那么再说两个机房的选择,我认为在同城选择两个是最好的,当然这个城市也要可靠,比如北京、上海这种大城市就会可靠很多。


为什么呢?


是因为通常我们都会有存储的需求,就拿mysql举例:你为了保证性能和数据的一致性,通常会在访问量较高的电信机房配置主库,联通机房配置从库。而同城间的网络传输更加可靠,你的服务也会更加可靠。


所以,运营商和部署机房的选择,十分的重要。


机房间的异地多活问题

上面提到的mysql的那个例子,试想一下,如果电信机房挂了,我们把服务切到联通,但是联通的mysql是从库只读,那么服务有问题啊。


所以在你的系统设计中,异地多活这个问题我觉得是一定要考虑进去的。你的解决方案并不能仅仅只是可用,而是要好用才行。


服务器选型

我之前有过这样一个经历:服务扩容,我在新机器上部署后,发现性能不如老机器。


经过多方排查,最终定位发现新机器和老机器不是同一厂商生产的,最终推送公司测试发现新机器厂商的这批机器存在质量问题,所以后来有段时间我们申请机器时,会特意提出要求不使用这个厂商的机器。


新的服务平台的选型

最早我们的服务直接部署在物理机上,后来公司大推虚拟化,到现在也尝试部署在容器服务中。


我想说的是,你把服务部署在哪里,你还是要了解那个平台的相关知识的。就比如容器吧,我觉得并不是只会使用就行了,还要尽可能多的了解它的相关知识,明白可能存在的问题,这样才能有助于你做出更好地决策。


服务监控

我们的系统上线正式运行后,可能会出现各种各样的问题,如磁盘写满了;进程突然挂掉;内存缓慢泄漏;mysql等存储出现问题等。


这些问题出现并不可怕,你也无法做到全部避免,所以我们需要做好的,是服务的监控报警,有问题第一时间发现,快速解决。


记得我的一个leader告诉我,代码上线出现bug不可怕,但如果没有第一时间收到报警发现问题,才是最可怕的。这一点至关重要!


4

不断精进

除了上面说的,自己的不断精进也是十分重要的。


这需要自己不停学习新知识,不断反思做过的事情。我有时觉得,自己之所以选择编程这条道路,就是能很享受自身不断精进的所带来的满足感。


5

结束语

最后,我再分享下自己这些年在编码方面不断改善中一直在做的几点:


  1. 看好书;

  2. 对做过的项目要总结、反思;

  3. 自己觉得不好的地方坚决重构,没有时间只是借口。


用一句话总结下:我要让我做出的系统能够稳定运行10年!


参与互动,即可有机会领取运维宝典——《OpsDev年度精选》一本。

参与方式

01、转发本文章到朋友圈并附上走心评论,留存24小时后截图发送至后台,我们将抽取前5名赠送以下好书一本。

02、在本文评论区留下您的真知灼见,我们将挑选评论点赞数最高的一位赠送以下好书一本。

640?wx_fmt=png

OpsDev 年度精选

这本《2017 OpsDev年度精选》是360 OpsDev团队把自己近一年的经验、教训、感想拿出来与同行们分享,如同开源对产业界的贡献,经验分享也会有利于整个行业运维水平的提升,在IT与互联网已经变成基础设施的今天,尤其重要。

——谭晓生

360技术总裁  首席安全官

HULK一线技术杂谈

由360云平台团队打造的技术分享公众号,内容涉及云计算数据库大数据监控泛前端自动化测试等众多技术领域,通过夯实的技术积累和丰富的一线实战经验,为你带来最有料的技术分享

640?wx_fmt=gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值