改和看别人的代码是一种什么感受

2023-11-09

1523635621409683ede93b0

工作里面可能会沉淀下来很多的东西,比如文档,代码/脚本,或者图片,甚至你留下的趣事或者“案底”。

对于修改代码,我很多年前就体验过一次,是修改自己写的代码,记得刚毕业的时候写了一个小的项目,是使用Java的Swing技术实现的,能够对一个表格做数据的增删改查。当时写得真是昏天暗地,坐地铁回家的时候都有一种头重脚轻的感觉。这仅仅是一个开发前的纯技术练习而已。写了一周的样子,把代码推给自己的导师来看,导师从各种角度提出了很多的问题,有的问题确实是硬伤,有的问题感觉是理解的角度不同,所以带着半推半就的态度开始第二版,第二版很快就迭代出来了,完成的这种感觉就跟你考完试一样,再也不想看自己写的代码了。第二次的时候,导师从设计模式的角度给我提出了一些建议,然后我开始重新审视自己写的代码,改一改,调一调,看起来是那么回事了,依稀记得当时使用的是命令模式。这一次自己感觉确实是差不多了,从代码的命名规范和“优美”程度来看,感觉已经很难挑出问题了,导师看了下,整体给予了肯定,然后把自己的代码发给我,互相参考学习。这个时候换了一个全新的角度,可以发现很多地方自己还是有待改进的地方。程序开发就是如此,总是有很多待改进的地方。

当然我也碰到了一些比较尴尬的情况,比如我们之前开发一个相当复杂的业务,一个类竟然已经被上百个人改过了,看着一条条的代码改动标记和注释,就会对已有的程序能够稳稳当当运行起来抱有一种崇敬之情。程序的逻辑太多,所以很多时候发现设计模式用不上了,因为满足业务优先,你做了大的改动,代码看起来优美了,业务肯定就崩了,我确实这么尝试过,当时的场景也确实很尴尬,所以我们习惯在程序里面打代码补丁,这是我自造的一个词,意思就是代码里的补丁,比如逻辑判断的部分,发现某个场景会触发一些异常,所以我在逻辑判断的时候塞进去一个if判断,然后中间来控制一下这个变量的变化,然后又很纠结的重新定义一个变量。业务是跑起来了,后来的人可就惨了,我记得当时看一个类的方法,差不多有上千行,我看逻辑已经快懵了。然后小心翼翼的在里面添加一堆逻辑,为了不和其他人的逻辑干扰,我自己抽取了一个段代码。

程序开始调试了,还算勉强通过,结果我旁边的同事有些奔溃了,笨重的服务器跑起来了,发现代码执行逻辑的部分还没有运行到他写的代码就奔溃了,可以想象那种排队的感觉有多无奈。

如果代码层面的问题得以解决,或者说能行得通,那么前端部分的纠结也蛮多,记得比较有意思的一个案例就是当时开发的一个网上营业厅的页面,我们测试了IE的低版本还有firefox,chrome等,显示都是正常的,当时比较新的浏览器版本是IE8,结果客户反馈一上线发现页面的字体显示有些错乱,细细了解了下问题,发现原来是客户的领导的电脑上是这样的,他的电脑浏览器版本比较新,而其他人还是习惯用相对较低的一个版本,都没有问题,碰到这种情况怎么办,改吧,首先要满足第一层的需求。当时找公司同事来提交补丁改已经来不及了,我现场打开电脑,查看代码,硬生生的调了一版,想起来除了无助就是无奈。

慢慢的,也确实有了一些经验,所以会时不时的看看别人写的代码,我觉得基本有两种状态。一种是看了之后有种惊喜的感觉,要不是里面的代码风格很清新,代码看起来就好比一个装饰品一般,低调奢华,要不是代码的逻辑非常缜密,很多你没想到的点,这里都考虑到了,设计中的幂等性在这里是完美的体现。或者是代码的精道,原来的一小段逻辑判断,可能人家一行代码就搞定了,这种情况立马打开电脑默默的模仿一些,记下这个绝技,这是好的一方面,当然还有一种情况,也不一定是极端,可能是大多数人都会犯的错误,程序就好比一个喝醉的人一样,只考虑正常的逻辑,不正常的逻辑说明逻辑不正常,不需要考虑,当然我写的很多代码也确实是这样,从小步快走,快速迭代的方式来说,这种方法是对的,代码代码不够充实和健壮,能够一气呵成是意料之外的。

还有一个痛点就是经常会看着看着自己就纠结起来,为什么要这么实现呢,明明有更好的方法,可能在某个时间看看代码,终于能够体会写脚本的人的痛处了,原来是有这么一个坎,只能不得已为之,当然这种情况确实很少,一方面能耐下心来认真看完代码还不如自己去好好实现一版。所以你会在行业里看到很多类似的情况。

对我来说,代码的意义本身就是服务于业务,作为一个服务的载体,代码问题肯定无处不在,一味的追求代码的完美在工程实践中还是很可能会做妥协,而不管不顾方法论,只是堆砌代码也是万万不可的,从某种程度上来说,代码的逻辑清晰和设计上好的风格可以保证程序的健壮性,当然还有一点很重要就是最起码得有一些代码的解释。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-2152929/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23718752/viewspace-2152929/

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

改和看别人的代码是一种什么感受 的相关文章

  • 【Qt 菜单和二级菜单的加入和删除】

    QMenu MainMenu new QMenu this QAction option new QAction MainMenu actionList lt
  • 可加密解密的MD5算法

    public class MD5andKL MD5加码 32位 public static String MD5 String inStr MessageDigest md5 null try md5 MessageDigest getIn
  • 【SpringBoot高级篇】SpringBoot项目部署到docker环境中

    SpringBoot高级篇 SpringBoot项目部署到docker环境中 idea手动部署 1 创建springboot项目 1 1 POM xml 1 2 Controller 1 3 appplication yml 2 打包spr
  • eclipse debug后new 菜单只有 Project 、Example 、 Other 没有Java Project 、Package 、Class等的解决方法

    eclipse debug后new 菜单只有 Project Example Other 没有Java Project Package Class等的解决方法 解决办法 切换工作空间
  • 2023网安人才报告:网络安全科技人才市场需求规模快速增长

    7月24日 奇安信行业安全研究中心联合牛客平台 网教盟 新安盟 广州大学 深圳信息职业技术学院等单位 在BCS2023重庆网络与数据安全产业大会上共同发布了 2023网络安全人才市场状况研究报告 报告显示 在过去一年中 网络安全科技人才市场
  • 如何把文件传到华为云服务器,如何把文件传到云服务器

    如何把文件传到云服务器 内容精选 换一换 本节为您介绍如何在本机使用远程登录工具MSTSC登录Windows弹性云服务器 弹性云服务器状态为 运行中 如果弹性云服务器采用密钥方式鉴权 已获取Windows弹性云服务器的密码 获取方式请参见获
  • 电脑主板跳线_电脑哥教你如何接电脑主板跳线

    主板跳线接法详解 图 作为一名新手 要真正从头组装好自己的电脑并不容易 也许你知道CPU应该插哪儿 内存应该插哪儿 但遇到一排排复杂跳线的时候 很多新手都不知道如何下手 钥匙开机其实并不神秘 还记不记得你第一次见到装电脑的时候 JS将CPU
  • stm32f407 usb cdc设备无法启动问题

    最新要做一个项目 要求基于STM32F407实现USB CDC设备 首先想到的就是直接用STM32CUBEMX工具来生成 OK 话不多说 直接上过程 RCC配置 Sys配置 USB OTG FS配置 USB DEVICE配置 时钟配置 然后
  • Windows 下安装并配置Maven

    前言 Maven 翻译为 专家 内行 是Apache下的一个纯Java开发的开源项目 Maven 是一个项目管理工具 可以对Java项目进行构建 依赖管理 Maven是基于项目对象模型 POM project object model 可以
  • 输入阻抗与偏置电流

    对于高阻信号要选用FET运放 高阻信号R2和运放上的高阻并联会影响实际R2电阻值 CMRR 共模抑制比 放大电路对差模信号的电压增益与对共模信号的电压增益之比的绝对值 因为我们要抑制零漂所以共模电压增益越小越好 而差模电压增益越大越好 所以
  • pycharm上已存在某些库,但无法调用的问题解决

    如果出现pycharm上已存在openpyxl 但无法调用的时候 就是pycharm安装openpyxl库时 安装的位置与pycharm中引用python解释器的位置不一致 导致不能调用opentyxl 所以再安装openpyxl时 把项目
  • Python 绝对简明手册

    原文 简述 1 阅读须知 文中使用 gt gt gt 作为会命令行中的输出信息的前缀 对于不清楚用用途的函数可以在解释器下面输入 help 函数名 来获取相关信息 另外 自带的文档和google也是不可少的 2 基本语法 2 1 if el
  • 简历制作讲解

    简历制作讲解 前期假想 简历如同一本书 书大体分为文本结构和文本内容 一 简历文本结构 一 个人信息 必要 二 教育背景 必要 三 自我介绍 可选 四 工作经历 五 项目经历 六 技能评价 二 简历文本内容 一 个人信息 必要 必要信息 姓
  • WebTestClient使用

    介绍 WebTestClient用于测试WebFlux服务器端点的主要入口点 它具有与WebClient非常相似的API 内部大部分调用WebClient实例 主要提供测试上下文 绑定到一个服务 WebTestClient testClie
  • 解决:参考的对象类型不支持尝试的操作。 [已退出进程,代码为 4294967295]

    问题描述 win10系统下运行wsl时候显示错误 参考的对象类型不支持尝试的操作 已退出进程 代码为 4294967295 经过个人测试解决方式为关闭网易UU当前的加速 过一会就恢复正常 不需要重启
  • MySQL架构的Server层的执行过程

    1 连接器 主要负责跟客户端建立连接 获取权限 维持和管理连接 2 查询缓存 优先在缓存中进行查询 如果查到了则直接返回 如果缓存中查询不到 在去数据库中查询 3 解析器 分析器 分析器的工作主要是对要执行的SQL语句进行词法解析 语法解析
  • 基于SpringBoot+Async注解整合多线程

    提示 本文没有使用原生的创建线程方式 默认已掌握创建线程的四种方式 全文基于SpringBoot框架 要求读者掌握SpringBoot操作 本人能力有限 如有遗漏或错误 敬请指正 谢谢 文章目录 其他文章 前言 一 为什么要使用多线程 二
  • 计算机 服装生产管理的变化,服装生产管理概述.doc

    PAGE PAGE 182 目 录 TOC o n h z HYPERLINK l To 第一章 服装生产管理概述 HYPERLINK l To 第一节 服装生产概述 HYPERLINK l To 一 服装生产企业的特点 HYPERLINK
  • Yii 2.0集成七牛云

    背景知识 七牛云就是我们常说的图床 什么是图床 可以简单理解为是一种存储图片资源的服务器 本文基于Yii2简单介绍七牛云的使用 1 首先在七牛云平台创建账户 传送门 2 登陆账户之后 点击头部菜单管理控制台 进入之后 点击左侧菜单存储对象
  • 技术岗-网上测评智力题

    A 逻辑推理 1 你让工人为你工作7天 给工人的回报是一根金条 金条平分成相连的7段 你必须在每天结束时给他们一段金条 如果只许你两次把金条弄断 你如何给你 的工人付费 2 请把一盒蛋糕切成8份 分给8个人 但蛋糕盒里还必须留有一份 3 小

随机推荐

  • Qt Plugin

    问题 创建 Qt 插件 方法 1 QML 插件 1 qmldir plugin dll plugin qml 位于同一目录 目录名和模块名相同 2 错误列表如下 no dir no qmldir module module is not i
  • CUDA C编程3 - 并行性衡量指标

    系列文章目录 文章目录 系列文章目录 前言 一 CUDA C并行性衡量指标介绍 二 案例介绍 1 案例说明 2 案例实现 3 结果分析 总结 参考资料 前言 CUDA编程 就是利用GPU设备的并行计算能力实现程序的高速执行 CUDA内核函数
  • 相关系数R-判定系数R方的matlab实现

    相关系数 判定系数 相关系数是最早由统计学家卡尔 皮尔逊设计的统计指标 是研究变量之间线性相关程度的量 一般用字母 r 表示 由于研究对象的不同 相关系数有多种定义方式 较为常用的是皮尔逊相关系数 相关表和相关图可反映两个变量之间的相互关系
  • Table表格(antd-design组件库)简单使用

    1 Table表格 展示行列数据 2 何时使用 当有大量结构化的数据需要展现时 当需要对数据进行排序 搜索 分页 自定义操作等复杂行为时 组件代码来自 表格 Table Ant Design 3 本地验证前的准备 参考文章 react项目
  • java 正则表达式 pattern_Java—正则表达式(Pattern类和Matcher类)

    正则表达式介绍 正则表达式可以用于对字符串的处理 相当于是一个匹配字符串的模板 主要包含查找 替换 分割 提取等操作 Java中通过Pattern和Matcher类提供对正则的支持 字符处理 特殊字符处理 对于特殊字符 前面都要加上 进行转
  • 前端埋点实现

    您好 如果喜欢我的文章 可以关注我的公众号 量子前端 将不定期关注推送前端好文 前端埋点实践 介绍 1 实现自定义hook 监测组件 2 收集数据 3 前端错误捕捉 4 发送后端保存数据 5 收集数据展示 总结 介绍 这段时间博主一直在投入
  • c语言编程单片机实现一个按键顺序按亮,另一个顺序按灭

    Led顺序点亮与熄灭 一次一个 博主是小白 这几天一直在搜索和思考怎么实现我的功能 即一共俩个按键 8个led 现象一 采用移位函数 实现按s1 led顺序点亮 按s2 led顺序熄灭 我实现的是一个一个顺序点亮 一个一个顺序熄灭 incl
  • Git - 查看 commit 提交历史

    查看提交历史 在提交了若干更新 又或者克隆了某个项目之后 如何查看提交历史 git log 官方栗子 运行下面的命令获取该项目 git clone https github com scha 运行 git log 命令 可以获取到的信息 不
  • ‘project‘ is not a registered tag library. Must be one of:

    今天又来记录一下 平时开发中遇到的错误 先看报错 project is not a registered tag library Must be one of 基本可以定位到是没有导入project导致的 那么导入project 代码在这里
  • git的使用(详细教程)通过命令行操作及vscode插件

    个人仓库创建 首先在网页中注册并登录gitee 然后进行如下操作 1 在Gitee页面右上角找点 号点击新建仓库 2 填写一个仓库名称 下移将红框圈起的方框勾选上即可创建仓库 仓库介绍可写可不写 3 创建成功跳到如下界面 4 此时不要关闭该
  • 主数据系统的设计与实现

    1 主数据系统的必要性 随着企业信息化的不断深入 企业建设的业务系统 办公系统等信息系统越来越多 由于规划 预算 实施计划等原因限制 各信息系统建设的步调不一致 规划不统一 导致一个严重的问题 一些基础数据 比如商品编码 客户编码等 在不同
  • Windows环境下TensorFlow的安装及如何在Jupyter Notebook中使用TensorFlow

    最近开始学习TensorFlow 因为自己电脑配置不高 只能在Windows下安装cpu版的TensorFlow 首先安装了最新版的Anaconda 接着使用pip命令安装TensorFlow出现下面的问题 tensorflow 1 1 0
  • linux下tomcat常用命令与配置

    最近经常用到的linux下的命令 重启tomcat ps x 查看pid kill 9 pid 杀死进程 app tomcat bin startup sh 启动tomcat 追踪日志 tail f app tomcat log log 配
  • 【华为OD机试真题2023B卷 JAVA&JS】服务失效判断

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 服务失效判断 知识点图 时间限制 1s 空间限制 32MB 限定语言 不限 题目描述 某系统中有众多服务 每个服务用字符串 只包含字母和数字 长度 lt 10 唯一标识 服务间可能有依
  • java/php/net在线教育平台设计

    本系统带文档lw万字以上 答辩PPT 查重 如果这个题目不合适 可以去我上传的资源里面找题目 找不到的话 评论留下题目 或者站内私信我 有时间看到机会给您发 系统设计 4 1 系统体系结构 在线教育平台的结构图4 1所示 图4 1 系统结构
  • leetcode二维查找

    今天是LeetCode专题43篇文章 我们今天来看一下LeetCode当中的74题 搜索二维矩阵 search 2D Matrix 这题的官方难度是Medium 通过率是36 和之前的题目不同 这题的点赞比非常高 1604个赞 154个反对
  • vue使用video.js

    1 安装 npm install video js 2 引入全局样式 main js 中加入 import video js dist video js css 3 使用
  • 测试两台服务器之间的网络带宽

    一 选择iperf的原因 为了测试两台服务器在局域网内的带宽 有人说 使用文件拷贝的方式 其实测试出来的都不太准确 受限于磁盘IO等等因素的影响 为了有较准确的测试结果 iperf是最好的选择 二 iperf安装 yum install y
  • Vue---内置指令、自定义指令(详细)、全局指令与局部指令

    目录 一 v on 二 v bind v model 三 v if v else v show v for 四 v text v big 五 v html 六 v cloak 七 v once 八 v pre 九 自定义指令 函数式 十 自
  • 改和看别人的代码是一种什么感受

    工作里面可能会沉淀下来很多的东西 比如文档 代码 脚本 或者图片 甚至你留下的趣事或者 案底 对于修改代码 我很多年前就体验过一次 是修改自己写的代码 记得刚毕业的时候写了一个小的项目 是使用Java的Swing技术实现的 能够对一个表格做