我不能只给我分配三个以上的错误,还是不能理解上千行的意大利面条代码,这是正常的吗?


19

我正在一个旧的代码库上工作,而这个代码库... 也不完美,而且环境也不一样。这不是我一生中见过的最糟糕的代码库,但是仍然存在很多问题:零单元测试;具有数千行代码的方法;对面向对象基本原理的误解;等等

维护代码很痛苦。

  1. 每次我必须调试一千行写得不好的方法,并且要重复使用变量时,我完全迷失了。
  2. 我所做的一些修改或重构在应用程序的其他位置引入了错误。
  3. 缺少任何文档,测试或可观察的体系结构,再加上名称不正确的方法,我觉得我已经填满了所有可用的工作内存。为了理解我应该修改的代码,我必须记住的所有其他内容都没有剩余的余地。
  4. 工作场所不断的打扰让我不安,并使我慢下来。
  5. 如果没有错误跟踪系统,我一次最多记不起两三个任务,而周末我会忘记所有这些任务。

我的同事似乎没有类似的问题。

  1. 他们设法比我快得多地调试写得不好的方法。
  2. 与引入我的代码库相比,它们引入的bug更少。
  3. 他们似乎很好地记住了更改代码所需的所有内容,即使它需要读取20个不同文件中的数千行代码。
  4. 他们似乎并没有受到电子邮件,电话铃响,周围聊天的人和其他向他们提问的人的干扰。
  5. 由于我们使用TFS,因此他们不想使用我们已经拥有的错误跟踪系统。他们宁愿只记住他们应该做的每一项任务。

为什么会这样?开发人员长时间使用写得不好的代码时,会获得某种特殊技能吗?我相对缺乏使用错误代码的经验是否会导致这些问题/感觉?我的记忆有问题吗?


1
您的同事比您对这个特定的代码库更有经验吗?而且,单元测试/错误跟踪/等等实际上不一定是全有或全无的方法。只需在您负责的部分上开始实施它们即可。
Graham

1
这就是为什么存在封装的原因。
罗伯特·哈维

Answers:


26

是的,结构化人员受到非结构化代码/环境的影响是正常的。您的同事最好过滤掉所有背景噪音。作为偏头痛患者,我知道当偏头痛发作时,我过滤环境的能力会大大下降。人们各不相同。

对于代码也是如此,您的同事可能已经学会了用一种方法过滤掉来自多个抽象级别的“代码噪声”,并且已经熟练地将代码“分块”成更大的功能范围。

适应您所描述的代码库只需要花费时间。您的同事可能有更多的时间来发展它,并可能选择了不习惯“代码基础新手”的约定,模式和构造。混乱的结构可能比您想象的要多。与您的同事交谈,请他们与您配对一些时间,并思考他们如何解决分配给您的错误之一。当他们要求您打开X,Y或Z单元时,请问他们为什么选择那个单元,它告诉他们它可能是相关的,等等。

用千行法迷路是很正常的。用一个好的折叠编辑器来攻击它,并添加注释以将各个部分分块为函数和/或过程,而实际上并没有这样做。打印内容并使用老式的荧光笔也有帮助。

在没有单元测试安全网的情况下进行重构会使您无所适从。别。只是不要。

没有人要求您将所有内容都保留在内存中。如果您的同事不想或不需要一个错误系统,只需在自己的待办事项列表中编写分配给您的任务,并在与某人谈论您的任务详细信息时/之后写下笔记。


+1表示“是的,结构化人员会受到非结构化代码/环境的影响是正常的。”
Mh Mahbubur Ra​​hman

2

我看到3个要点:

第1、2和3点源于这样的事实,即您的同事只是对代码库更有经验,这意味着他们知道其怪癖。这意味着他们将长期内存用于调试过程,并且可以记住doXYZ实际上可以进行UVW,但由于历史原因从未被重命名。但是,如果他们花了几个月的时间进行编码,那么他们将开始感到您的痛苦。

对于第4点的抗干扰能力,不要让非紧急业务将您带出区域,而在受到干扰后,要花很长时间才能回到该区域;将公司的IM设置为忙碌,尝试安排较长的时间(整个下午)进行编码

在第5点,用您当前正在处理的错误作为个人待办事项列表(或使用IDE中的任务管理功能)创建一个excel工作表,我敢打赌您的一些同事也在做同样的事情


谢谢您的建议。注意:关于第5点,我们已经有了TFS,这是一个包含错误跟踪系统的产品。我是今天唯一使用它的人。我不了解公司的每个开发人员,但是我可以肯定地知道,有几个甚至没有在Excel或简单的文本文档中都没有错误列表。
Arseni Mourzenko 2013年

2

对我来说听起来不像是内存问题。听起来您的工作习惯/倾向不适合您所遇到的事情,并且您对同事而不是您自己的思考过多。

  1. 千行方法-每个人都将为此迷失方向,除非他们只是为此而努力。他们可能会更快地拿起或拿回它。除非经验丰富,否则您将无法更改,甚至可能无法更改。

  2. 重构引入的错误,总是有风险的。您可以尝试开发单元测试以涵盖您所做的更改,然后再进行更改,但是管理层可能不允许这样做(可能不是,或者已经完成)。而且单元测试并不是不可思议的事情,它们仍然可以错过东西,您仍然可以引入错误。可能是它们没有重构。这可以追溯到(1),他们可能会尝试着眼于需要解决的问题,这意味着他们可以更快地达到目标,但是错过了更大的画面,并且需要花费更长的时间来解决下一千行的问题。

  3. 创建完成工作所需的内容。如果这意味着要创建流程图或其他文档,请这样做。他们是否需要它,以及在创建它之后是否使用它都无关紧要。

  4. 中断会使每个人都慢下来。专注于这一点只会让您放慢脚步。接受它并尝试尽快回到凹槽中。

  5. 记住两个或三个bug并不坏,三个或四个会更好,但是与其尝试改进它,不如放弃并写下来。纸,白板,tfs,excel,单词或记事本-只需写下来即可。我敢打赌,这就是您的同事正在做的事情。要么随机修复,要么修复。

编程不是关于完美的内存,也不是能够忽略干扰—专注于此只是您正在创建的干扰。


1

CAVEAT / UPDATE:阅读以下答案后,我觉得可能会有点刺耳。并非我的意图,您所描述的环境很糟糕,并且会影响大多数人(可能甚至更好的程序员也会遭受这种影响,但是与同一个环境中的其他人相比,它们“更好”)。我的回答只是假设环境不会改变(即使会改变),也逐点反映您的问题。

完全可以接受的答案:

1)这取决于技术经验,维护应用程序的经验(如果设计不好,则会更多),甚至是应用程序的特定部分。还取决于您的注意力集中问题(第4个)

2)它与数字1相同,但使用的度量标准不同。相同的答案。

3)记事本和笔。或word / excel文件。不难解决。

4)这是个人关注的问题。但是,不确定是否可以自己进行改进。

5)是否使用票务系统不应由程序员决定,而应由项目经理决定。征求他的意见/提出您的观点。如果他反对,则记下便签并再次书写。


我认为多次打扰是一个糟糕的工作环境。如果有很大的噪音,那应该解决。至于电子邮件,请学习将其拒之门外。例如,上班,午餐后和离开之前,花10分钟检查电子邮件。除非您知道某些重要事项,否则请全天不间断地检查它们。
mgw854

@ mgw854我重读了我的答案,并且我同意这似乎比我想要的要苛刻。我并不是说这些问题仅是OP的错,而且环境(无论是物理上还是组织上的)似乎都是可怕的。即使对于那里最好的程序员来说,我也相信这些问题会严重打击性能。我只是在指出减少OP感觉在同一个环境中的其他程序员之间存在的“差距”的方法。
SJuan76 2013年

0

我以前曾经历过这样的情况,根据这种经验,我可以说您的问题与记忆无关,并且您的想法(最肯定与工作无关)使您感到压力重重,使您无法专注于100 %即将完成的任务。

因此,第一步是当您坐在办公桌前时,请先从这些东西中清除思路。

这种压力可能还会增加,因为您感觉自己在工作效率方面落后了,因此请尝试与同事交谈,并要求他们提供有关重构方法的提示。

最后,如果您必须写下已解决和/或正在解决的问题(不必是复杂的错误跟踪系统),不要感到尴尬,最好确定一些东西,因为您从而不是将其从头顶说出来而不是100%地确定

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.