程序员进阶攻略
胡峰
京东成都研究院技术专家
立即订阅
7492 人已学习
课程目录
已完结 65 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 程序行知:走在同样的路上,遇见自己的风景
免费
征途:启程之初 (4讲)
01 | 初心:为什么成为一名程序员?
02 | 初惑:技术方向的选择
03 | 初程:带上一份技能地图
04 | 初感:别了校园,入了江湖
修炼:程序之术 (10讲)
05 | 架构与实现:它们的连接与分界?
06 | 模式与框架:它们的关系与误区?
07 | 多维与视图:系统设计的思考维度与展现视图
08 | 代码与分类:工业级编程的代码分类与特征
09 | 粗放与精益:编程的两种思路与方式
10 | 炫技与克制:代码的两种味道与态度
11 | 三阶段进化:调试,编写与运行代码
12 | Bug的空间属性:环境依赖与过敏反应
13 | Bug的时间属性:周期特点与非规律性
14 | Bug的反复出现:重蹈覆辙与吸取教训
修行:由术入道 (24讲)
15 | 根源:计划的愿景——仰望星空
16 | 方式:计划的方法——脚踏实地
17 | 检视:计划的可行——时间与承诺
18 | 评估:计划的收获——成本与收益
19 | 障碍:从计划到坚持,再到坚持不下去的时候
20 | 执行:从坚持到持续,再到形成自己的节奏
21 | 信息:过载与有效
22 | 领域:知识与体系
23 | 转化:能力与输出
24 | 并行:工作与学习
25 | 时间:塑造基石习惯(上)——感知与测量
26 | 时间:塑造基石习惯(下)——切割与构建
27 | 试试:一种“坏”习惯
28 | 提问:从技术到人生的习惯
29 | 偏好:个人习惯的局限与反思
30 | 写作:写字如编码
31 | 画图:一图胜千言
32 | 演讲:表达的技术
33 | 定义:阶梯与级别
34 | 晋升:评定与博弈
35 | 关系:学徒与导师
36 | 核心:安全与效率——工程技术的两个核心维度
37 | 过程:规模与协作——规模化的过程方法
38 | 思维:科学与系统——两类问题的两种思维解法
徘徊:道中彷徨 (15讲)
39 | 职业倦怠:如何面对?
40 | 局部最优:如何逃离?
41 | 沟通之痛:如何改变?
42 | 技术停滞:如何更新?
43 | 无法实现:困扰与反思
44 | 完成作品:理想与现实
45 | 代码评审:寄望与哀伤
46 | 人到中年:失业与恐惧
47 | 该不该去创业公司?
48 | 该不该接外包?
49 | 技术干货那么多,如何选?
50 | 技术分歧,如何决策?
51 | 技术债务,有意或无意的选择?
52 | 选择从众,还是唯一?
53 | 选择工作,还是生活?
寻路:路在何方 (7讲)
54 | 侠客行:一技压身,天下行走
55 | 江湖路:刀剑相接,战场升级
56 | 御剑流:一击必杀,万剑归心
57 | 三维度:专业、展现与连接
58 | 三人行:前辈、平辈与后辈
59 | 三角色:程序员、技术主管与架构师
60 | 三视角:定位、自省与多维
蜕变:破茧成蝶 (3讲)
61 | 工作之余,专业之外
62 | 跨越断层,突破边界
63 | 成长蓝图,进化跃迁
结束语 (1讲)
尾声 | 始于知,终于行
程序员进阶攻略
登录|注册

08 | 代码与分类:工业级编程的代码分类与特征

胡峰 2018-08-20
编程,就是写代码,那么在真实的行业项目中你编写的这些代码可以如何分类呢?回顾我曾经写过的各种系统代码,按代码的作用,大概都可以分为如下三类:
功能
控制
运维
如果你想提高编程水平,写出优雅的代码,那么就必须要清晰地认识清楚这三类代码。

一、功能

功能代码,是实现需求的业务逻辑代码,反映真实业务场景,包含大量领域知识。
一个程序软件系统,拥有完备的功能性代码仅是基本要求。因为业务逻辑的复杂度决定了功能性代码的复杂度,所以要把功能代码写好,最难的不是编码本身,而是搞清楚功能背后的需求并得到正确的理解。之后的编码活动,就仅是一个“翻译”工作了:把需求“翻译”为代码。
当然,“翻译” 也有自己独有的技术和积累,并不简单。而且 “翻译” 的第一步要求是 “忠于原文”,也即真正地理解并满足用户的原始需求。可这个第一步的要求实现起来就很困难。
为什么搞清楚用户需求很困难?因为从用户心里想要的,到他最后得到的之间有一条长长的链条,如下所示:
用户心理诉求 -> 用户表达需求 -> 产品定义需求 -> 开发实现 -> 测试验证 -> 上线发布 -> 用户验收
需求信息源自用户的内心,然后通过表达显性地在这个链条上传递,最终固化成了代码,以程序系统的形态反馈给了用户。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《程序员进阶攻略》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(21)

  • WolvesLeader
    怎么判断一个代码的好坏,我总是不知道自己写的代码是不好还是好

    作者回复: 那就看看一些标准库或开源代码,找找好的感觉

    2018-08-23
    9
  • 艾尔欧唯伊
    感觉运维代码是最复杂,但是前期是最看不到收益的的。。。
    但是却很重要,特别是项目规模上去之后。。。

    作者回复: 很多时候,运维类代码都成了技术债

    2018-08-20
    9
  • third
    突然想起了,福特曾经说过的一句话,如果我们去问顾客想要什么,他们会告诉我们想要一辆更好的马车,而不是汽车。

    作者回复: 😄,哈哈,经典的福特之问

    2018-08-22
    7
  • godtrue
    恩,讲的很好!一门语言学会后,编程的困难在于对业务逻辑的理解,尤其对于业务背景和整体流程的理解,决定了业务抽象的层次的高低,和看问题的深浅程度!
    大厂应该都有基础架构平台,各种维护性代码应该比较容易加,让业务工程师专注于业务。

    作者回复: 恩;业务大了后,都会工具化和平台化,才会有规模效应

    2018-08-20
    3
  • 项目时间太紧的一个后遗症就是deadline 只能保证功能代码调通。运维代码缺失,大量fixme:有空时再补日志,有空时再补错误码,有空时再补国际化,有空时……

    作者回复: 有空时,就忘了……😂

    2018-08-20
    3
  • Michael
    于现阶段的我而言 我觉得更难的是针对业务逻辑的抽象和实现 把业务逻辑的实现和业务相对应 和PM脑子里的概念相对应 让后来的人能看代码就能知道业务的所有规则 清晰明确的掌握业务 这个是最难的

    作者回复: 所有的代码都需要一定程度的抽象思维

    2018-08-21
    2
  • 吴封斌
    第二次拜读这篇文章,但对于控制,和运维还不是很明白😭,作者可以在形象化点说明吗?😊

    作者回复: 那可能是你还没怎么写过类似的代码,所以觉得抽象,不着急,多做些事情,多写点代码,会恍然的😄

    2019-04-18
    1
  • 小伟
    控制不仅仅是业务逻辑代码的控制,还包括性能、容错等方面的控制。而且业务代码里也包含了逻辑步骤的控制,界定控制的边界是关键。赞同老师最后一句的观点,但落地需要一些好的方法论,后面继续学习。
    2019-03-10
    1
  • 予悠悠
    没有完全理解控制代码究竟是哪一类代码。胡老师可以举更多的例子解释吗?

    作者回复: 比如并发,互斥,流控,隔离等控制代码执行的代码

    2019-01-26
    1
  • 杨城
    老师对代码分类的很清晰👍
    接触到的大部分程序员都希望更多的编写高技术含量的控制代码,会觉得写业务代码比较枯燥没啥技术含量,而且每个公司业务并不通用,请问老师我们平时学习中应该怎么平衡在学习两者上投入的时间精力呢?

    作者回复: 不用太刻意去平衡,哪里的需求更强烈就投入到哪。业务和技术是价值链上的两个环节,两个环比一个环更有价值

    2018-09-11
    1
  • liangjf
    刚出来工作的我只想尽快熟悉各个业务功能,然后串起来,理清整个框架

    作者回复: 恩,刚开始都是这样的

    2018-09-06
    1
  • CrystalSuenny
    "因为从用户心里想要的,到他最后得到的之间有一条长长的链条
    极客时间版权所有: https://time.geekbang.org/column/article/13626
    ",看到这一点,您遇到过用户具备甲方攻城狮的情形么;是不是若产品经理不打算偷懒的话,甲方攻城狮那边其实没有技术职责?从技术上来讲,形同虚设是不是噢。。
    2018-09-05
    1
  • like_jun
    一直纠结这个。终于看到了答案。

    作者回复: ^_^

    2018-08-29
    1
  • 登高
    最近的编程中这三个方面都体验到,如何分离不太懂
    2018-08-21
    1
  • monkeyking
    如何让开发正确理解产品的需求有哪些好的方式呢
    2018-08-20
    1
  • 忆灬星辰
    拐回来又看一遍,还是受益良多。
    平常很多时候都是写完功能代码就急着被催上线,现在更会注意一些三码齐全。希望coding越来越好
    2019-12-04
  • Corsica
    代码归类:

    功能
    控制
    运维
    2019-04-16
  • 阿信
    总结:
    对于最终需要交付运行的程序代码,
    从代码的用途(or使用场景)上将作者代码分为三种:功能代码、控制代码、运维代码。
    功能代码,满足于用户需求,为实现特定的业务功能而开发。
    控制代码,对代码执行流的控制,如并行、异步、限流、熔断、超时控制等。RPC、中间件、代理服务器等,应该是对代码执行流的控制。控制代码的需求,是从众多(已有的或预见的)功能开发中提炼而来,基于一些共性的特征抽取。源于功能而高于功能。
    运维代码,用于解决运行过程中出现的问题,或者为解决问题提供必要的信息。

    结合工作,我们做的防重组件,是控制代码。基于pinpoint实现链路跟踪,是对业界已有的运维代码成果的使用

    作者回复: 嗯,理解很对

    2019-03-10
  • 乔良qiaoliang
    业务,控制,运维三个层面的划分好清楚
    2019-02-13
  • 绿鲤鱼与驴。
    优雅就是边界与距离,最后一句话说的真好

    作者回复: 🤝

    2018-11-14
收起评论
21
返回
顶部