Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save hexiyou/73b6f1a78402e8c1e2629865faaac612 to your computer and use it in GitHub Desktop.
Save hexiyou/73b6f1a78402e8c1e2629865faaac612 to your computer and use it in GitHub Desktop.
写代码要牢记在心的规则
读书,先是从厚读到薄,然后是从薄读到厚;写代码也是一样一样的
不停coding,但又及时回顾、提炼,总结出一些规律和方法,再从这些规律和方法出发,指导后续的工作,这是一个「从厚到薄」的过程
针对其中的每个点,可以从容自得地、深入浅出地讲解、分享给其他人,可以解决一些深层次的问题,这个过程就是「从薄到厚」
正所谓「厚积薄发」,「厚积」容易,「薄发」难,最近这半年在支付宝的工作,自我感觉提升非常大,但是提升的内容仅仅只能抽象出一些要点,还做不到由点及面地开展,简单记录下,希望不久将来,可以「薄发」
架构层面
一个好的框架、架构,不仅仅是提供方便的基础服务帮助大家快速开发,同样重要的是,提供一种开发模式方面的指导和约束;例如: 支付宝技术架构的全面SOA化,让身在其中的开发同学不得不以服务化的方式、思维进行工作,再如Ruby On Rails框架,也是提供了一整个Web开发的套路
这里推荐一篇好文章: 实施微服务,我们需要哪些基础框架?
认真设计包结构,包结构是工程的骨架,骨质疏松的工程,一定是难以持久发力的;有了好的包结构,并行开发时分工方便、代码重构升级时迁移方便、解耦性和内聚性从框架层面可以得到支持,好处一大摞
设计层面
接口就是合同,要像劳动合同的条款一样,一条一条地抠: 字段、行为、语义、返回值,深思熟虑 ,接口一旦发布,就像合同生效,轻易不可变更
重视接口的错误码(error code),想清楚对于这个接口什么样的行为才是错误(error),常见的一个反模式就是把正常的业务逻辑、流程分支当做错误码返回给调用方
关键业务、接口,必须考虑性能,做好预案(eg: 限流)
编码层面
代码如诗文,优质的代码阅读起来一定是清晰流畅的,是「Don’t make me think」的,不须要高深的模式,不须要牛逼的技术,只须要简明易懂,大智若愚;晦涩难懂的代码,难读、难扩展、满地是坑
注重基本功,要有代码洁癖,想尽办法使代码精简,使用优质的类库(eg: guava / joda-time)提升代码质量
工作方法
作为一名码农必须清晰认识到这世界上从没有一锤子的买卖、从没有一次性的代码,基于这个大前提:
1.绝不要copy代码,copy越多坑越多,今日抄得爽,明日改得哭,现世报
2.绝不要硬编码,拒绝魔法数,今日偷懒,明日采坑,现世报
3.绝不要GuiTian业务方,绝不要直白地把需求一是一、二是二地赶出来,要动脑筋做归纳做抽象,要想办法沉淀代码、模块,今日无脑赶工,明日只能继续造轮子,现世报
4.代码要内聚、要解耦、要分层、要权责明确,今日写大饼式的一坨代码,明日就要为如何扩展而烦恼,现世报
5.设计表结构要具备一定的通用性、扩展性,为未来留下想象空间
6.会说「NO」会说「NO」会说「NO」重要的事情说三遍
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment