『No22: 如何梳理代码逻辑』

大家好,我叫谢伟,是一名程序员。

最近状态不是很好,输出少了...

本节主题:如何梳理代码逻辑

在日常工作中,作为初中级程序员,大部分的工作是在实现业务逻辑,但有可能整个项目的代码,你不是第一个接手的,即代码结构不是你设计,前期的需求讨论你也没有参与,最常见的情况是,你接手的是半成品的项目。

这个时候需要你不断的完成需求。

那么如何快速的熟悉的项目,之前我讲过的一个方法是:使用相同的技术栈实现一个类似的项目。

上述的方法可以让你快速的熟练技术栈,比如技术选型,比如项目的组织,比如代码的风格。可以快速让你避免对技术的不适感。

但是存在什么问题?

即:你熟练了技术栈,但是对业务实现并没有实质性的帮助。怎么说?你借用相同的技术栈,需求的提出是你自己,需求的实现也是你自己,这样的总体实现起来,当然比较容易,你理所当然知道如何实现需求。

现实中的需求呢,常常是变动的,特别是创业公司,为了卖出产品,可能会在项目内完成一些客户提出的满足自己需要的需求,需要你定制,这个时候的需求来自客户,客户的需求可不管你的实现的难度和合理性。

这个时候,需要你对一个或者多个项目的实现细节比较熟悉,不然来的需求,你可能会不太清楚实现起来可能会遇到什么样的问题、实现的难度是什么。当然这些问题,随着你经验的越来越丰富,你会越来越熟练,越来会知道实现中的问题,以及时间的评估。

本节,讲述的是你经验不是那么足,如何快速的了解的项目并且快速实现需求。

1. 一个工具:思维导图

这个工具,有人用来梳理想法、有人用来拆分思维观点...

有手写的,也有借助APP等客户端设备的。

当初我用这个工具的想法很简单,即梳理想法,比如想写一篇文章,初期我会借用思维导图来梳理角度,列举文章的主要方面,比如先写什么,后写什么,想表达什么,用什么样的实例来辅助证明我的观点等。

前期也还纠结于如何手绘思维导图,把时间都纠结在绘制好看的思维导图层面,现在回头看看有点本末倒置了。

随着自己思维不断的演练,思维导图的功用越来越和列表差不多。

当然因人而异。

思维导图的功用是用来梳理想法之类,很多使用者使用经常用来提炼书籍的主要观点。

所以,理所当然可以用来梳理代码的逻辑。

2. 怎么用

  • 理解项目结构
  • 找到主程序入口
  • 阅读源代码
  • 再读一遍
  • 边读边绘制思维导图
  • 数据库(增删改查)

如何借用这个工具来梳理代码逻辑?

  1. 理解项目结构

项目结构这事,我总是反复说,项目清晰的划分一定程度上体现在项目结构上,随着接触项目的越来越多,项目划分、项目结构都存在一定的共性。

比如,项目的配置信息、中间件、模型的定义、项目的入口、第三方包、编译脚本等

理解项目的结构是第一步,知道项目的哪个部分是用来做什么,哪些是辅助性的功能,哪些是核心实现的功能。

  1. 主程序函数入口

在Go 语言中,主函数入口,就是 main 函数,但一般main 函数都不是那么明显,不是一眼可以看出功能来。

比如API 主函数,只是启动 Web 服务,开始监听端口,真正的函数入口有可能是设备捕获头像信息,将头像信息入库,成为数据库原始数据。

  1. 阅读源代码

比如API 服务,这个好办,一个个接口看,看如何实现资源的增删改查,对应的动作是什么。绝大多数接口都只是完成对资源的简单操作,比如删除,比如获取,比如更新等。

这些不是我们进行思维导图的重点,重点应该是理解项目的原始数据的入口。

比如说这是一个机器视觉项目,摄像头是数据采集器,核心应该是在关注原始数据采集这块。

比如采集到的参数有哪些,涉及到的模型有哪些,对应的数据库内表有哪些,采集到一条数据,涉及哪些表操作等。这些才是我们需要阅读源代码的重点。

  1. 再读一遍

没什么。书读百遍其义自现。

  1. 边读遍绘制导图,不断修缮
  • 传入的参数是什么
  • 涉及的表有哪些
  • 表为什么这么设计
  • 表之间的关系是咋样的
  • 中间件起到什么样的作用
  • 程序结束的标志是什么

磕磕碰碰,中间可能还有不懂,实在琢磨不透,问问有经验的人。

3. 理解业务

  • 根据思维导图更改代码实现需求

当你绘制完了,你对整个项目的理解更进一步了,这个时候最好的办法是不断的实现需求。根据自己的能力先想想如何自己实现需求以及对应的时间评估。

尽早完成需求,不断的向比自己高段位的程序员求证,需求的实现是不是正确的,delay 了 容易给人不靠谱的印象。有可能别人只要和你提个点,你就能更好的完成任务了呢。

4. 抛开代码理解业务

  • 从商业的角度
  • 从产品经理的角度

其实这个阶段的事不必单独抽出来,在实现需求的过程中都是不断的理解的。

因为需求,就是根据这些商业的需要才得到。你理解了商业的需要,你就知道需求,知道了需求的本质,产品经理给你的需求,你自己就可以考量,是否合理,需求是否是过度的,或者说换个角度,需求是不是更合理?

比如说,这是一个机器视觉项目。所有的数据源是图像,拍摄到的图像,进行算法识别,入库,再根据库内带有信息的图像进一步分析,得到一些商业价值。

都是识别场景,机场需要的识别场景可能和线下新零售的识别场景不一致。机场更多的识别人和物的安全性。新零售识别人,更多的是针对人给出商品推荐。

所以,在编写代码的过程中,你需要理解需求的来源,从商业和产品经理的角度思考需求。

你可能会觉得自己水平还不行,给需求就乖乖实现得了。

技术只是手段,最终的目的是完成好的产品,多思考合理性也许能不断的使产品更好,参与一款好的产品的过程,为什么不呢?

5. 反复和优化

  • 爆炸式增长
  • 渐进式增长

简单的实现业务需求,对一个后端工程师来说,这些远远不够。

只能实现需求,你的可替代性就强,核心竞争力就弱。因为随便找个对语言熟悉的人,都可以完成你的任务。

后端工程师,技能的精进,和数据量的大小还是有一定相关的,比如数据量只有10万级别,你可能怎么实现都可以,也不太会遇到难题,瓶颈等。

那假如 100万呢,1000万呢,1亿呢?这对后端工程师的要求显而易见吧?

通常来说,只要你不是做外包的,基本上你会持续的接触一个或者多个项目,项目会随着需求不断的变更。当然随着数据量的增多,项目的整体设计也可能需要变更。数据量的增多,有爆发式的,这种情况,没有一定的知识储备,解决起来非常的难,第一,你需要经验;第二,你需要团队。比如某APP 用户量瞬间从百万级到亿级,这种情况,没有足够的积累,不好意思,解决不了的。

再一种是渐进式,比如你卖出一个设备,数据量大概增加5万,这种渐进式呢,原则就是遇到问题,解决问题。或者提前储备知识,进行项目优化。

具体的过程,等我技术上升一个等级再来细说。

6. 总结

本节讲述的是如何进行代码逻辑的梳理。借助思维导图进行梳理。没有具体的使用实例,只是大概讲述了制作思维导图梳理代码逻辑的要点。

原因有二:

  1. 我自己接手的项目不宜公开
  2. 开源的项目大多不是偏业务型,都是框架类或者第三方库类。这种不太有承前启后的逻辑梳理。

希望大家喜欢。可以在实际的项目内多尝试。

谢谢,我是谢伟,再会。

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

推荐阅读更多精彩内容