日常开发中,如何给团队留下财富?

技术团队中,财富即代码,但并不是所有的代码都是财富,有些代码可能是毒药。前段时间看到一篇文章,“你写的代码,是别人的噩梦吗?”,虽然标题针对我们技术人员来说,可能有点刺耳,但有时候确实是不争的事实。

在码奴圈,有一句话很流行:“能运行工作的代码就是好代码”。这句话没有对与错,在小的创业团队或人员能力不足的情况,能运行工作的代码确实是好代码,因为它解决了我们当时的问题。在对于有追求的技术人员来说,特别是在一个多人开发的团队中,产品功能在不停的迭代、优化,好代码就会我们的开发效率与维护效率带来成倍的提升。

何谓“好代码”,每个人的答案其实是不一样的。但说到“坏代码”,大家应该都能说出一箩筐来。

我先说一下我认为的“坏代码”:可读性差、业务逻辑相互缠绕、代码复用性低,这样带来的后果将是隐藏bug、团队其他人员调用或维护难以入手,更严重的可能就是重构。有时候可能陷入不停的重构循环当中去。原因有二:1.自己写的代码,没有重构到关键点上;2.下一个重构者与上一个开发者不分伯仲。

那好代码就是坏代码的反面:可读性强、业务逻辑低耦合高内聚、代码复用性高、有良好的可拓展性

说了这么多,解决问题才是王道,如何才能按照上面说的好代码的目标开发,下面分享给大家一个容易入手的方法。

一、面向用例编程(横向):

1.先把系统按照功能进行划分,细化成多个功能模块。做到每个模块的功能是相对独立的,但也有可能一个模块与另一个模块有交互。

2.将功能需求进行抽象,达到高内聚、低耦合的标准,明确该功能模块的参与者是什么。

3.对每一个功能模块进行业务分析,看看是否能再按照子功能进行细分,细分后形成具体的用例。

4.对具体用例进行分析,理清用例与参与者的关系、参与者与参与者的关系、以及用例与用例的关系。

将功能需求划分成一个个独立的用例后,我们就能很清晰的表达功能需求的分离与组合。即先造一个个通用的轮子,然后对这些轮子按照业务需求进行组装。这样就能达到有良好的组件颗粒度,很好的满足了代码结构清晰、复用性强、组件可任意插拔、各个功能可以独立测试(单元测试)的目标。

面向用例编程的核心是把业务分解成一个个小的独立的case(解耦),在根据业务需求将相关case聚集、组装在一起(内聚)。最终又回归到我们经常说的低耦合、高内聚的目标之上。大到模块划分、小到函数定义,都是同样的方法。业务case集成一个模块,功能函数聚集成一个类。

面向用例编程也是封装的一种体现。将内部逻辑封装在一个盒子(case)里,对外只需要暴露接口。调用者也只需要关注接口,不关心底层逻辑。

所以在我们开发之前,进行业务建模,还是很重要的。

二、分层架构(纵向)


上面说的面向用例编程是从横向对业务功能进行解耦,那分层架构就是从纵向上对功能职责的划分。不论是后端开发、前端开发还是客户端开发,分层架构很普遍。通常我们会在纵向上对项目进行三层划分:展示层、业务逻辑层、数据访问层。MVC、MVP、MVVM都是为了更好的分层。

在团队成员中,经常会有人质疑分层,认为有时候明明是一个很简单的逻辑,非要搞几层数据转换,把结构搞的比较复杂。这个观点也没有错,在生活中能用简单的方法完成一件事情却故意把事情搞的很复杂,确实是多此一举。但我们通常是做一个复杂、庞大且不停迭代更新的项目,功能业务可能会像网状一样交织在一起。如果没有清晰的结构、各个组件各司其职,如何能保证多人开发的团队敏捷高效的共同开发,发现问题及时定位问题所在。

三、建立约束(规则)

约束即规范,团队成员按照一套统一的规范开发,尽可能的降低沟通成本(了解现有代码逻辑成本、业务调用成本、维护成本等)。约束包括一下几个方面:

1.命名规范:按照规范进行合理的命名,BEAN、ENTITY、DTO、API等都分别代表不同的标签或职责。看到名称就知道它能做什么事情。

2.分模块、分包:每一个组件或包都有自己明确定义的职责,不可以乱放。presenter包只放Presenter,config包只放配置文件等。

3.统一的结构:项目主体要统一结构,坚决不能出现相似业务不同代码结构,这样只会让参与项目的其他成员不知所错。

4.代码检查:如果有可能或有条件的话,通过工具或插件进行项目代码的检查,可以是静态的编译检查,也可以是动态的运行时检查。

总之,建立约束,就是让项目的参与者开发出来的代码尽可能的保持风格一致。

上面说了这么多,我们在开发过程中,只要代码具有低耦合、高内聚、可拓展、有良好的可读性,就是给团队创造财富。


Android客户端分层架构实战,FoolMVP。

一种MVP的实现方式,目标:代码高度复用、良好的组件颗粒度、方便进行单元测试,结构尽量清晰简单的高内聚低耦合的分层结构。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容