【CSDN 编者按】呵,对一名资深的 CV 工程师而言,想看五分钟之前的代码,撤销是不可能撤销的,顶多是 Ctrl-A 之后 Backspace,再重新 CV……

作者 | Austin Z. Henley

译者 | 弯月

出品 | CSDN(ID:CSDNnews)

一项研究发现,Java 开发人员每 6 分钟就会重复一次撤销/重做,也就是说他们会将代码还原到以前的状态(例如单击撤消或按 Ctrl-Z)。他们会突然间狂按撤销,紧接着再狂按重做。事实上,另一项研究的一名参与者在 5 分钟内使用了 40 次撤消/重做!当被问到为什么要这么做时,他们表示他们希望在修改过程中看一看代码的某个中间状态。

为什么在修改的过程中很难看到代码 5 分钟前的状态?

撤销有次数限制

撤消和重做只能重复处理一小段代码。即便如此,这中间仍然有一些问题:

  1. 如果进入之前的某个状态,然后进行修改,则无法再点击重做,而且之前的更改将全部丢失;

  2. 你无法并排比较前一个版本与最新版本;

  3. 没有任何视觉指示告诉你,你在撤消/重做历史记录中的哪个位置;

  4. 有些代码编辑器使用全局撤消堆栈,而有些则会为每个打开的文档建立一个撤消堆栈,这可能会干扰你在脑海中想象的动作顺序;

  5. 我发现代码编辑器中有很多动作不会添加到撤消堆栈中(例如,更改调试选项),这会在调试 bug 的时候带来不少问题;

  6. 一次只能后退一小步,非常麻烦。

以及其他问题等等。

为什么不使用版本控制

有人可能会问,为什么要依赖撤销/重做呢?版本控制可以很好地解决这些问题!

下面,我来解释一下为什么版本控制解决不了这些问题的一些原因。当开发人员修改代码时,他们可能并不会意识到他们需要几分钟前的某个中间版本,直到他们做了大量修改并卡壳。我们的研究中反复出现了这种情况。这就引出了一个问题:不成熟的提交,这会迫使开发人员在没有做决定所需的所有信息之前决定是否要保存一个中间版本,不管这个决定是否有必要。除非每隔几分钟就向 git 提交一次代码,而且可以不管这些代码是否可以正常运行,否则版本控制都没有太大帮助。

开发人员对于寻找所需的信息,往往会过于自信,并且还会大大低估获取这些信息所需的工作量。

复制文件

我们看到有些开发人员想到了其他方法:在修改代码的过程中,他们会复制代码文件,或者截屏相关的代码。我本人以前也干过类似的事情,当我担心会弄乱代码时,我会按下 Ctrl-A 和 Ctrl-V,将所有代码复制到一个新标签中,然后将这个窗口放在编辑器旁边,作为参考。我甚至见过拥有 20 年经验的专业开发人员也会这么做!

回到我们的问题,为什么在修改代码的过程中,看看 5 分钟前的代码如此困难?为什么代码编辑器不能更好地支持这种行为?

救星来了!

早在 2015 年,我就开始构思解决方案,我的设计可以为开发人员提供所需的信息,同时又无需大费周折。你不仅可以并排比较多个版本,而且还会自动记录“重要的”更改。由于我可以访问 LabVIEW 代码编辑器的源代码,因此我建立了一个 LabVIEW 的分支,并在实验版本中加入了这个功能。虽然 LabVIEW 是一种可视化的拖放语言,但基本思路也同样适用于传统的代码编辑器。后来,我向十几位开发人员、经理和其他 LabVIEW 用户做了演示,获取了反馈,并进行了迭代。

下面,我来介绍一下这款工具:Yestercode。你可以利用时间轴浏览代码历史记录,就像 YouTube 视频一样。在你编辑代码的时候,它会汇总所有的代码,并在该版本的时间轴上显示一个点。接下来,你可以利用时间轴查看之前的版本,而且还可以并排比较当前版本。之前的版本是只读的,但允许你从中复制代码。它还会显示注释,以方便你了解之后的版本中进行了哪些修改(类似于 diff)。

几年前,我又构建了一个 Atom 插件,并针对传统的文本代码实现了相同的功能。

最后,我希望通过一个工具来比较所有类型的文件,甚至是 Word 文档,电子表格和 PDF 等。我做了一些原型:

希望有一天 Yestercode 能成为正式的产品!

原文链接:http://web.eecs.utk.edu/~azh/blog/yestercode.html

☞拿下丰厚的年终奖,却未能拯救总薪酬,2021 年度 IT 薪酬调查报告出炉!
☞三年白干!程序员孙某因违反《竞业协议》赔偿腾讯 97.6 万元,返还 15.8 万元
☞马化腾曾遭多年“威胁”:饱受烟害十年的“大兵”,终于戒烟了
☞《互联网人求职图鉴》:这类人才“最吃香”,最高薪编程语言出炉!

为什么我们很难看到代码 5 分钟前的样子?相关推荐

  1. 入职开发很少写代码_如何简化开发人员入职:将开发环境作为代码

    入职开发很少写代码 Imagine that only a decade ago system administrators deployed, configured, and maintained ...

  2. 都2021年了,为什么想回看5分钟前写的代码就这么难

    本文转载自 机器之心,作者:泽南.小舟 写代码的时候,反复修改是常见的事,修改之后忘记以前是什么样子好像也很常见. 如何才能够回溯那些被自己覆盖掉的代码片段?美国田纳西大学的助理教授 Austin Z ...

  3. python显示gif只显示背景没有图片_Python GIF显示,但很难看

    这是代码,真的显示了gif,但是很难看...我试着用PIL,但却是同一个bug.遵循2个代码(第一个是我自己的代码,第二个是网络代码)并打印: gif文件(是一个随机文件来测试,很可爱吧?kk): 请 ...

  4. R语言ggplot2可视化:ggplot2可视化密度图(显示数据密集区域)、ggplot2可视化密度图(对数坐标):log10比例的收入密度图突出了在常规密度图中很难看到的收入分布细节

    R语言ggplot2可视化:ggplot2可视化密度图(显示数据密集区域).ggplot2可视化密度图(对数坐标):log10比例的收入密度图突出了在常规密度图中很难看到的收入分布细节 目录

  5. 当程序员说“这代码写的可真烂”,他们的意思是“这烂代码不是我写的”。而当他们说这段代码有些“小问题”时,很可能这代码是他们自己写的...

    英文原文:What Programmers Say vs. What They Mean 你是否听到过同事说"这段代码不言自明"?你的同事的这句话的实际意思是这段代码不需要写注释. ...

  6. 【论文写作】Word文档中的MathType公式大小不一导致版面很难看完美解决方法

    今天在修改论文的时候发现之前用Mathtype7写的论文中的公式大小都变了,尤其是在论文中的公式,都变小了,看起来非常明显,导致版面很难看.下面是我弄的一个简单的例子 经过网上一番查找后,发现原因是W ...

  7. linux qq字体发虚,把其他字体伪装成宋体以解决QQ(Wine版)用宋体发虚很难看的问题...

    本文以Deepin 20 Linux系统为平台,介绍把其他字体如微软雅黑伪装成宋体的方法,这样可解决QQ(Wine版)因字体卡死及宋体字体发虚很难看的问题. 前言 通常情况下,在Deepin 20系统 ...

  8. nunito字体_dcat-admin: 使用很少的代码快速构建一个功能完善的高颜值后台系统,内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的HTML代码。...

    Dcat Admin是一个基于laravel-admin二次开发而成的后台系统构建工具,只需很少的代码即可快速构建出一个功能完善的高颜值后台系统.内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的H ...

  9. Vscode黑色主题很难看到鼠标

    Vscode黑色主题很难看到鼠标,像瞎了一样,找半天不知道鼠标在哪里,解决办法: 控制面板 → 鼠标 → 指针 看[自定义] → 选择[文本选择]→ 点击[浏览] 选择[beam_r],这个是光标周围 ...

最新文章

  1. RESTful Web Services初探
  2. 【unity3d--初始学习五--c#脚本对xml文件的创建和解析】
  3. Java面向对象---重写(Override)与重载(Overload)
  4. 如何将Android Studio卸载的干干净净?
  5. 对UTF8编码的初步认识!
  6. VARCHAR和CHAR类型使用场景
  7. Android 去除标题栏和状态栏的方法
  8. MySQL怎么卸载干净重装?
  9. 成长有三方面,其中最重要的是
  10. 程序员如何面对自己三十岁后的下坡路?
  11. c#明华rf读卡器_明华URF-R330读卡器C#代码示例
  12. OpenCV-Python 识别万用表七段数码管电流值
  13. Win10华硕atk驱动怎么安装_正版win10下载好后怎么安装?正版win10安装教程
  14. spring实战(第四版)读书笔记 附电子书网盘链接
  15. 支付系统设计:银行卡支付
  16. Java集合类框架总结
  17. 158. 精读《Typescript 4》
  18. 微信支付不成功的几个原因
  19. 结合网站ASPCMS标签集锦
  20. Silicon Labs EFR32 RF射频测试-RAILTEST

热门文章

  1. 离开百度三年多,吴恩达纽交所敲钟,身价再增20亿
  2. 乔布斯 1973 年求职申请表曝光,拍出 222400 美元高价!
  3. SAP QM启用了Physical Sample Management后检验批有哪些特殊地方?
  4. SAP RETAIL 为门店维护多个存储地点
  5. SAP RETAIL 如何确定自动补货触发的单据类型 II
  6. 人工智能先锋人物杰夫·辛顿说:“深度学习将无所不能”
  7. 实体链接:信息抽取中的NLP的基础任务
  8. 在2020年,你觉得计算机视觉有哪些值得研究的领域?
  9. SAP MMBE库存数量与在库序列号数量差异之处理
  10. 2019 年ML NLP领域十大研究热点