你如何处理过去的编程暴行?

Mic*_*ssa 11 language-agnostic

我们都没有成为专家(我们大多数人还没有).当然,我们都知道如何用我们喜欢的语言编写程序,但编写高质量的应用程序和编写语法正确的程序是两回事.我们工作,学习,努力,不断学习,最终达到其他人可以向我们学习的门槛.

如果你的学习过程与我的学习过程类似,你可能会写一些功能齐全,可靠的应用程序,这些应用程序仍然每天都在使用,但每当你想到它们时,都会感到羞愧.程序代码?混合业务和表示逻辑?SQL注入漏洞?代码荒芜荒芜的任何评论?名单还在继续.

不幸的是,我们都不能指望我们的雇主允许我们回去重写我们的旧应用程序,因为只要我们想到它们就会给我们做噩梦.更糟的是,我们中的一些实际工作,用我们旧的应用程序,但要知道,这将是太危险的和/或费时做了一大堆的好尽可能重构去.

你如何应对过去曾经犯下的编程暴行,以及那些发现肮脏秘密的人,你并不总是知道自己在做什么?

jpo*_*poh 19

不后悔.如果你不为上周写的代码感到羞耻,这意味着你没有作为程序员改进;-)

但说真的,我的方法一直是紧急修复那些危险的东西(例如SQL注入漏洞),然后在我碰巧在需要重构的特定区域工作时重构其他代码丑陋.在修复错误或引入新功能时,我经常会列出需要重构的代码列表,然后在完成"真实"任务后重构代码.它通常不需要花费过多的时间来完成,我进行单元测试以确保我没有破坏任何东西(如果你的代码没有经过单元测试,这是测试它的一个很好的理由!).

杰夫阿特伍德不久前在这里写了一篇很棒的博客文章(这里).


lav*_*nio 8

每当我小时候做一些不太理想的事情时,我的父亲会说,"好吧,生活是一种学习经历." 我们的应用也可以学习:

在我们的每个应用程序版本中,我们提供了各种变化:

  • 一两个重要的新功能
  • 一组较小的改进
  • 内部变化使我们的生活更轻松
  • 逐渐弃用并删除最严重的违法者

因此,我们逐渐尝试用第三和第四项替换麻烦的代码.

有时你可以抛弃你的错误.我认识一位高级开发人员曾经被雇用过一家公司,并被要求生产类似于他为第一家公司所写的东西,但更好.他们给了他工作人员和工具,他做到了.


Nos*_*dna 5

我的第一个程序仅存在于TRS-80磁带上,其中氧化铁已剥落.一对夫妇打印出一个7针40列热点阵打印机,将字母刻在特殊的银色金属涂层纸上.一个夏天,所有那张纸都在阁楼里变黑了.

我觉得我很好.我最古老的暴行被安全地摧毁了.


实际上,有一个暴行继续啃着我.我为Amiga创建了一个名为" Sliced HAM " 的视频模式,这种模式很受欢迎.它改变了每行的基色,以允许更逼真的图像,更少的边缘.

我很快写了一个转换器和查看器.在观察者中,我坐在忙碌的循环中等待用户关闭图像.Amiga是第一个大众市场多任务计算机系统,这是不可接受的.我应该等待窗口的关闭事件.

多年来,人们说视频模式很慢,但它只是我糟糕的示例查看器.图形协处理器正在完成每条扫描线的所有工作.

仍然困扰着我.