程序员进阶攻略
胡峰
京东成都研究院技术专家
33679 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 65 讲
蜕变:破茧成蝶 (3讲)
结束语 (1讲)
程序员进阶攻略
15
15
1.0x
00:00/00:00
登录|注册

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

编写它们的人可能分属不同群组,需要边界与距禿
一个满足工业级强度的程序系统,这三类代码,一个也不能少
有足够的边界与距离才能避免耦合与混乱
三类代码在程序实现中能看出明显的边界
重要工具:日志、检测诊断设计、面向切面编程、字节码增强技术
方便程序检测、诊断和运行时处理的代码
重要工具:各种开源框架、微服务架构模式
与程序运行的性能、稳定性、可用性直接相关
控制业务功能逻辑代码执行的代码
重要能力:理解业务及其背后用户的真实需求
搞清楚功能背后的需求并得到正确的理解
实现需求的业务逻辑代码
重要性
优雅的程序系统
运维
控制
功能
三类代码的设计与实现
三类代码
如何写出工业级强度的“优雅”程序系统?

该思维导图由 AI 生成,仅供参考

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

一、功能

功能代码,是实现需求的业务逻辑代码,反映真实业务场景,包含大量领域知识。
一个程序软件系统,拥有完备的功能性代码仅是基本要求。因为业务逻辑的复杂度决定了功能性代码的复杂度,所以要把功能代码写好,最难的不是编码本身,而是搞清楚功能背后的需求并得到正确的理解。之后的编码活动,就仅是一个“翻译”工作了:把需求“翻译”为代码。
当然,“翻译” 也有自己独有的技术和积累,并不简单。而且 “翻译” 的第一步要求是 “忠于原文”,也即真正地理解并满足用户的原始需求。可这个第一步的要求实现起来就很困难。
为什么搞清楚用户需求很困难?因为从用户心里想要的,到他最后得到的之间有一条长长的链条,如下所示:
用户心理诉求 -> 用户表达需求 -> 产品定义需求 -> 开发实现 -> 测试验证 -> 上线发布 -> 用户验收
需求信息源自用户的内心,然后通过表达显性地在这个链条上传递,最终固化成了代码,以程序系统的形态反馈给了用户。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文总结了如何写出工业级强度的“优雅”程序系统。作者将程序代码分为三类:功能、控制和运维。功能代码是实现需求的业务逻辑代码,需要清晰地认识需求并正确理解用户的原始需求。控制代码是控制业务功能逻辑执行的代码,与程序运行的性能、稳定性、可用性直接相关。运维代码是方便程序检测、诊断和运行时处理的代码,让系统具备工业级的可运维性。作者强调了这三类代码在程序实现中的重要性,以及它们之间的边界与距离的重要性。文章通过举例和分析,深入浅出地阐述了如何写出优雅的程序系统,为读者提供了宝贵的技术指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《程序员进阶攻略》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(27)

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

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

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

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

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

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

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

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

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

    作者回复: 嗯,理解很对

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

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

    2018-08-20
    4
  • 予悠悠
    没有完全理解控制代码究竟是哪一类代码。胡老师可以举更多的例子解释吗?

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

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

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

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

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

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

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

    2018-09-06
    2
收起评论
显示
设置
留言
27
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部