随想008:烂摊子

2023-05-16

我看到过很多离谱的现象。比如:

  1. 程序 代码重复、命名随意、逻辑混乱、甚至对齐都不一致,当我询问代码为什么这样写时,他们告诉我:我接手时就是这样
  2. 原理图参数错误、器件老旧,甚至原理都不合理,当我询问电路为什么这样设计时,他们告诉我:我接手时就是这样
  3. PCB 布局不合理、CPU 引脚扇出不合理、布线不合理、甚至在 PCB 上硬连线(原理图上没有这些器件),当我询问 PCB 为什么这样画的时候,他们告诉我:我接手时就是这样

我知道他们接手了一个烂摊子。
我能理解他们在维护这个烂摊子时表现出的愤怒和无奈,我还能理解为什么他们要强调“接手之前就这么烂”,但我不理解的是为什么这个烂摊子没有变好的迹象

烂摊子可能来源于目光短浅不够专业的同事或者前同事,就如我在《速度与质量》中写到的那样,他们走了捷径,牺牲了质量

但是,接手这个烂摊子的你,是可以有不同选择的。
是鄙视前面所有人,然后搞一下试一下,用尽可能省事的步骤搞定,将烂摊子搞的更烂一点?
还是
正视烂摊子,去重构、去微调整,让烂摊子一点一点变好,直到脱胎换骨,更容易的面对变更?

你应该有所追求,毫不犹豫的选择后者,你应该立即着手改进烂摊子。技术人员应该有着不可逾越的底线:不制造烂摊子,也不放任烂摊子。

我们都希望维护的代码是清晰的、可测的、高质量的,但这要依赖于前人栽树。

那么什么时候是种树的最好时机1
春天?秋天?
都不是。

种树的最好时机是在 10 年以前,这样你现在就可以在树下乘凉。

看看周围,很明显,你错过了这个时机。
那么,什么时候是种树第二好的时机?

今天,现在






读后有收获,资助博主养娃 - 千金难买知识,但可以买好多奶粉 (〃‘▽’〃)
千金难买知识,但可以买好多奶粉



  1. 摘自《测试驱动的嵌入式 C 语言开发》 ↩︎

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

随想008:烂摊子 的相关文章

  • 004_sklearn pipeline 和Gridsearch的使用

    1 sklearn pipeline的使用 xff08 1 xff09 简介 当我们对训练集应用各种预处理操作时 xff08 特征标准化 主成分分析等等 xff09 xff0c 我们都需要对测试集重复利用这些参数 pipeline 实现了对
  • Eclipse 查看源代码Source not found

    1 Eclipse 快捷键 ctrl 43 鼠标左键可以查看Java 类 函数的源代码 2 有时Eclipe配置不好时 xff0c 会出现source not found的问题 解决方法如下 xff1a xff08 1 打开window种的
  • realsense内参、外参获取

    启动相机节点 roslaunch realsense2 camera rs camera launch 查看相机参数信息 rostopic echo camera depth camera info 内参矩阵格式 fx 焦距xfy 焦距yx
  • ROS控制crazyflie无人机(一)

    ROS控制crazyflie无人机 参考资料测试环境一 设置用户权限二 安装Crazyflie程序库和客户端三 安装crazyflie ros程序包四 遥控器控制crazyflie无人机 本篇博客记录了测试使用ros控制crazyflie无
  • echarts 黑色样式

    lt THIS EXAMPLE WAS DOWNLOADED FROM https echarts apache org examples zh editor html c 61 dataset simple1 gt lt DOCTYPE
  • 磁盘分区

    磁盘 xff1a 可以被分区成多个分区槽 xff08 partition xff09 以Windows来看 xff0c 磁盘可以被分区为 C xff1a xff0c D xff1a xff0c E xff1a 槽 C D E就是分区槽 而L
  • 【STM32】IAP下载程序分析

    IAP下载程序分析 IAP基本原理STM32启动流程程序跳转代码实现总结 IAP基本原理 要实现STM32的IAP xff08 在应用编程 xff09 xff0c 需要分别建立bootloader和app工程 这里的bootloader程序
  • vue el-date-picker 设置可选近30天且时间范围为7天

    对 el date picker 限制 xff1a 默认选择时间范围为最近一天 xff1b 设置快捷选项 xff1a 最近1天 最近3天 最近7天等 xff1b 限制只能选择今天以及今天以前30天 xff1b 选择一个时间之后 xff0c
  • MySQL索引分析

    1 索引是什么 xff1f 索引是一种能提高数据库查询效率的数据结构 它可以比作一本字典的目录 xff0c 可以帮你快速找到对应的记录 索引一般存储在磁盘的文件中 xff0c 它是占用物理空间的 正所谓水能载舟 xff0c 也能覆舟 适当的
  • 任务是如何调度(切换)的?

    学习任务的切换有助于自己理解操作系统的运行过程 并且任务的调度 xff08 切换 xff09 也是操作系统中的重要的部分 任务的切换中关键是任务控制块的控制 xff0c 将现在以及将来要运行的任务向堆栈中的存储与恢复 因为 C OS II总
  • 机器学习算法五:随机森林(Random Forest)

    集成学习 xff1a 通过构建并结合多个学习器来完成学习任务 xff1b 集成学习中主要包括boosting算法 和bagging算法 xff1b boosting算法 xff1a xff08 线性集成 xff09 关注于降低偏差 xff1
  • 怎样利用VNC远程连接LINUX桌面

    关于显示等问题都有 xff0c 比较详细 http blog csdn net zhouyunjie archive 2008 11 27 3396824 aspx 先要修改 vnc xstartup文件 bin sh Uncomment
  • VNC多用户

    1 为vnc建立用户 newuser 2 拷贝 root vnc 里的xstartup文件到用户目录 home newuser 3 修改xstartup文件 xff0c 在最后增加 xff1a gnome session amp 4 以ne
  • 【环境配置】初试使用mitmproxy搭建网络代理

    初试使用mitmproxy搭建网络代理 1 参考文章 老版本的很多功能已经不能用了 xff0c 用新的版本研究了一下 参考文章 https mitmproxy org http www freebuf com sectool 76361 h
  • 关于Keil 的快速注释功能,并为其添加快捷键

    原地址 xff1a http blog sina com cn s blog 6859cadf0101i3p4 html Keil版本uVision 4 03 1 在Keil gt Edit gt Advanced中有两项 Comment
  • 【OpenCV】ArUco Marker

    1 创建 span class token keyword import span cv2 span class token keyword as span cv span class token keyword import span n
  • 非常实用,华为、新华三、锐捷交换机的配置命令分享

    干弱电这一行难免会接触到交换机 xff0c 华为 新华三锐捷交换机又是最常见的交换机 xff0c 关于他们的命令配置很容易弄混 xff0c 而且在实际项目配置中也很容易出错 xff0c 因此 xff0c 本期我们将来介绍这三家交换机的基础配
  • 打飞机小游戏

    设计目标 xff1a 高质量的代码要有这些优点 复用性好 扩展性好 维护性好 可移植性好 健壮性好 效率好 可读性好 所以设计代码的时候不要只想到功能的实现 xff0c 还要考虑功能的扩展及代码复用等 设计规则 xff1a 需求分析抽取共性
  • windows 安装 Navicat Premiun

    Navicat Premiun 中文网站 Navicat Premiun 官网下载 简介 Navicat Premium 是一套数据库管理工具 xff0c 结合其它Navicat 成员 xff0c 支持单一程序同时连接到 MySQL Mar
  • 论文排版中MathType的使用(论文投稿必备)

    使用mathtype往论文中插入公式时 xff0c 若需要编号 xff0c 则点击 右编号 xff08 若只需插入文本行内 xff0c 则点 内联 xff09 由于论文是分栏格式 xff0c 单行公式太长导致编号串行 xff0c 因此需要将

随机推荐

  • python语言中变量的共享引用及原处修改

    代码段一 xff1a 代码段1 gt gt gt a 61 6 gt gt gt b 61 a gt gt gt a b 输出 xff1a 6 6 上述代码段一中 xff0c 第一行我们创建了对象6 xff0c 并将变量a 与之相关联 xf
  • 通用环形缓冲区 LwRB 使用指南

    什么是 LwRB xff1f LwRB 是一个开源 通用环形缓冲区库 xff0c 为嵌入式系统进行了优化 源码点击这里 Github LwRB 特性 使用 ANSI C99 编写FIFO xff08 先进先出 xff09 无动态内存分配 x
  • Windows 环境下的 Socket 编程 3 - 基于 TCP 的服务器/客户端

    基于 TCP 的服务器端 客户端 绝大多数 TCP 服务器端都按照如下顺序调用 xff1a 在 Windows 环境下 xff0c 代码表示为 xff1a WSADATA wsaData span class token punctuati
  • 随想006:帮忙的时机

    我一直不理解发生在我身边的一个现象 从我第一次发现到现在已经几年了 xff0c 在一个又一个人身上 xff0c 不断地出现 在编程界 xff0c 重复 可能是软件中一切邪恶的根源 xff0c 我为此吃过苦头 让我记忆尤深的是 xff0c 当
  • 仿真软件 LTspice XVII 操作方法

    原理图编辑 与其它软件不同 xff0c LTspice XVII 软件先选择动作 xff0c 然后选择对象 比如要移动一个元件时 xff0c 首先选择 移动 xff08 move xff09 命令 xff0c 然后单击一个元件或框住一系列元
  • LwIP IP 层常用函数和宏

    1 将 4 字节数据组成 IP 地址 头文件 xff1a ip addr h span class token function IP ADDR4 span span class token punctuation span ipaddr
  • 测试驱动的嵌入式开发 001:VSCode + CMake + CppUTest 环境搭建

    本文是对 测试驱动的嵌入式 C 语言开发 第二章的实践 对资源受限的嵌入式项目如何进行测试驱动开发的所有疑问 xff0c 都因为本书第二章最开始的一句话而消解 xff0c 当我读到这句话时 xff0c 脑袋里有闪电掠过 这句话是 xff1a
  • 测试驱动的嵌入式开发 002:VSCode + CMake + Unity 环境搭建

    本文是对 测试驱动的嵌入式 C 语言开发 第二章的实践 搭建 VSCode 这部分参考博文 基于Windows 的 VS Code C C 43 43 编译环境搭建 安装 CMake 安装 CMake xff0c 在官网下载最新安装包 安装
  • 原理图与 PCB 绘制备忘

    原理图绘制 导出 BOM 点击菜单 Reports Bill of Materials xff0c 在弹出的生成 BOM 界面中 xff0c 点击 OK 按钮导出 BOM 批量修改器件标识 xff08 比如型号 xff0c 阻值 xff09
  • Windows 10 安装 MySQL

    确认是否已安装 MySQL xff08 1 xff09 按 win 43 r 快捷键打开运行 xff1b xff08 2 xff09 输入 services msc xff1b xff08 3 xff09 点击 确定 xff0c 在打开的服
  • lwIP 细节之四:ARP 相关知识

    ARP 表项的最大存活时间与宏 ARP MAXAGE 相关 xff0c 默认为 240 x 5000ms 61 20 分钟 当 ARP 表项还有最后一分钟 xff08 由宏 ARP AGE REREQUEST USED 控制 xff09 存
  • Windows 环境下的 Socket 编程 4 - 基于 UDP 的服务器/客户端

    在 TCP 中 xff0c 套接字之间应该是一对一的关系 若向 10 个客户端提供服务 xff0c 则除了守门的服务器套接字外 xff0c 还需要 10 个服务器端套接字 但在 UDP 中 xff0c 不管是服务器端还是客户端都只需要 1
  • ADS1120 备忘

    ADS1120 是一个小型 低功耗 16 bit 模数转换器 xff08 ADC xff09 xff1a 内置 PGA xff08 1 128 xff09 内置参考基准 xff08 2 048V xff09 内置温度传感器内置 2 个已配对
  • Windows 环境下的 Socket 编程 5 - 套接字的可选项

    套接字具有多种特性 xff0c 这些特性可以更改 更改和读取可选项函数 span class token keyword int span span class token function getsockopt span span cla
  • 使能中断与禁止中断策略比较

    本文描述的内容仅适用于 Cortex M3 M4 架构 Keil MDK 编译环境 在阅读 RT Thread 源码和 FreeRTOS 源码时 xff0c 发现二者使能中断和禁止中断的方式不同 xff0c 再加上 CMSIS 也提供了使能
  • FreeModbus RTU 移植指南

    FreeModbus 简介 FreeModbus 是一个免费的软件协议栈 xff0c 实现了 Modbus 从机功能 xff1a 纯 C 语言支持 Modbus RTU ASCII支持 Modbus TCP 本文介绍 Modbus RTU
  • 随想007:模块化代码

    你一定不止一次的听说过模块化代码 理想的模块化代码高内聚低耦合 逻辑清晰 经过严格测试 xff0c 易于复用 嵌入式 C 编程界到处流传着它的大名 在学校 在公司 在各种技术书籍中 xff0c 你总能找到它的身影 它被描述的像是无所不能 x
  • VS Code 用作嵌入式开发编辑器

    使用 Keil MDK 进行嵌入式开发时 xff0c Keil 的编辑器相对于主流编辑器而言有些不方便 xff0c 比如缺少暗色主题 缺少智能悬停感知 xff08 鼠标停在一个宏上 xff0c 能自动展开最终的宏结果 xff09 代码补全不
  • CSDN Marddown 编辑器语法备忘

    原文链接 xff1a https blog csdn net blogdevteam article details 103478461 本文对其二次加工 xff0c 增加渲染样式 补充例程 添加未收录的常用语法 CSDN Markdown
  • 随想008:烂摊子

    我看到过很多离谱的现象 比如 xff1a 程序 代码重复 命名随意 逻辑混乱 甚至对齐都不一致 xff0c 当我询问代码为什么这样写时 xff0c 他们告诉我 xff1a 我接手时就是这样 xff01 原理图参数错误 器件老旧 xff0c