繁体   English   中英

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

[英]How do you deal with your past programming atrocities?

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

仍然困扰着我。

这是一个很好的问题。

除非您正在编写开源软件或者只是将旧代码转移到网上,否则我认为这不是一个大问题,因为未来的雇主不会看到您过去的轻率行为。 您也可能不会受到前雇主的约束,他们也不会发布源代码。

大多数(好的)开发人员会随着时间的推移而改善,过去的同行会意识到你今天可能比以前更好,就像他们可能更好一样。 您的雇主根据您的经验而不是您现在的经验向您付款,因此他们得到了他们付出的代价。

如果除了你以外的其他人关心你的应用程序并且每天都使用它,那么他们可以自由地维护它(如果他们有源代码)。 代码变得陈旧。 没有得到维护,改进和重新考虑的应用程序要么完美(不太可能),要么不够重要,不值得付出努力。 如果一位前雇主在没有维护它的情况下继续在你的旧应用程序上赚钱,那就是他们的问题和他们客户的问题,最终现金牛将会枯竭。

如果您觉得您的应用程序被广泛使用,那么代码是免费提供的,并且可能会在下一个thedailywtf帖子中显示某些内容,请继续修复它。 否则,很高兴有足够的旧平庸代码,所以你不会引起注意。

我认为更大的问题是我们早年留下的文字废话 - 旧的论坛帖子,不正确的博客帖子,语言功能的火焰战争等等。

也许您所在的组织中您可能有或没有机会纠正过去的错误。

可以做的就是记得保持谦虚,乐于助人的人谁现在在哪里,你曾经是一个阶段。

这比以前更加困扰我。 我已经认识到它只是开发过程的一部分。 没有人从第1天开始(甚至现在就开始)编写完美的代码。鉴于您当时拥有的技术和资源,您编写的代码很多时候已经足够了。 将您在10年前编写的代码与1周的截止日期与当前使用当前技术和技能组合的代码进行比较是不公平的(对于您或其他任何人)。

我公开道歉。 我想借此机会为INewWindowManager道歉。 抱歉。

如果没有损坏,请不要修理它。

我知道可以更简单,更优雅地完成某些事情的感觉,也许是因为你现在更好地理解了框架,或者因为你学到了一些新技术。 但是,当你想要扩展或改变一些代码时,这才真正有用,否则只要它运行就让它运行。 如果它不工作 (即如果它是越野车,速度太慢,吃资源等),你仍然应该修复它开始,因此有一点遗憾,只是还没有。 否则,你还在担心什么? 代码之美是如此短暂......; o)

从另一个角度来看,如果你进入其他人的代码,甚至是你自己的旧代码,你不应该对找到次优代码感到惊讶。 我们都这样做。 事实上,当你成功地重构旧代码时,这是一个让自己变得沾沾自喜并扮演英雄的机会。

非最佳代码只是工作的一部分。 我们应该期待它遍布每个角落,并且在我们需要触摸时始终准备重构旧代码。 如果管理层不了解它并且不允许你有时间这样做,这只是一个问题。

鉴于工作仍然存在,你仍然有机会提交新的东西,修复废话并检查! 修复错误永远不会太晚。 并没有什么可尴尬的。 每个人都会犯错误。

我也相信诚实,好的进攻是最好的防守。 只是大声说,“这是我的代码,它是废话”,人们会和你一起笑:)没有必要尝试隐藏你的代码。 它在您的VCS中,无论如何都有您的名字。

编码器有一项新服务: 错误代码偏移 支付以弥补过去的编程暴行......

处理这些不良记忆的最好方法是向他们学习,我相信你已经有了。 当您向团队成员请求宽恕时,同样重要的是,这也很重要。 最重要的是,当你指导团队的初级成员时,你应该记住这些“坏榜样”。

它可以是一种平衡的行为。 我一直被“改进”一些正在运行的代码所困扰,但我认为这很难看,并引入了一些愚蠢的新bug。

另一方面,在我职业生涯中的几次,我一直在努力设计一些设计糟糕的垃圾代码(由我或其他人编写) - 有时会持续数周 - 因为我觉得我没有时间修复它。

在每一种情况下,我终于咬紧牙关并再次正确地完成它,问题几乎立即消失了。 然后我希望我早点修好它 - 从长远来看会更快。

把你的精力集中在给你实际悲伤的部分 - 你需要处理的部分(新功能,错误修复),但你害怕因为它们太脆弱或太可怕而触摸。

这可能是一个很好的指标 - 你越害怕它,就越需要修复它。

-Tom Bushell

我在网上匿名发布,让别人受苦! 不用等了,我在我的博客上做了,可能会被同行嘲笑。

我确保我先备份旧的东西,“以防万一我不像我想的那样聪明”,“如果我像我想的那样聪明,我就能证明这一点!” :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM