Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 如何对抗startover效应_Debugging_Design Patterns - Fatal编程技术网

Debugging 如何对抗startover效应

Debugging 如何对抗startover效应,debugging,design-patterns,Debugging,Design Patterns,当我被要求修复一个bug或者在一个我没有开发的项目中引入一个特性时,我经常会有这样的感觉,从零开始会给我带来很多工作、痛苦和努力。虽然通常这显然是更多的工作,似乎我遭受了很大的痛苦 那么,你是如何克服这种冲动,专注于项目,还是在修复bug或引入功能的同时,让自己一点一点地将项目变形为你更喜欢的东西 关于我的一些观点: 我是一个相当好的程序员 我认为自己是一个Python程序员,意思是我试着跟随 我真的不喜欢大的抽象(下面的例子中有更多) 很明显,有时我自己的代码也会有这样的问题 要对我所谈论

当我被要求修复一个bug或者在一个我没有开发的项目中引入一个特性时,我经常会有这样的感觉,从零开始会给我带来很多工作、痛苦和努力。虽然通常这显然是更多的工作,似乎我遭受了很大的痛苦

那么,你是如何克服这种冲动,专注于项目,还是在修复bug或引入功能的同时,让自己一点一点地将项目变形为你更喜欢的东西

关于我的一些观点:
  • 我是一个相当好的程序员
  • 我认为自己是一个Python程序员,意思是我试着跟随
  • 我真的不喜欢大的抽象(下面的例子中有更多)
  • 很明显,有时我自己的代码也会有这样的问题
要对我所谈论的项目提出一些观点:
  • 最近,它们中的大多数都基于php,但可能是任何语言
  • 可能是由从未真正编写过大型项目或团队代码的人编写的
  • 最常见的是大量的类和伪抽象(详见下文)
  • 很可能没有任何评论
  • 命名错误的变量、类和函数
  • 大量冗余,例如大量的
    style=“border:1px纯黑”
    或者在每个htm文件中使用不同名称的相同javascript函数,或者轮流调用的类
  • 巨大的转换语句就像几百行代码
  • 有时构建在不推荐使用的库之上,或者仅仅是为了服务一个非常小的功能集
  • 巨大的代码库,而不需要真正将代码拆分到不同的文件中
  • 奇怪的球形
  • 奇怪地方的死代码(如switch语句)
我如何尝试解决它: 最近,如果我必须修复某件事,我会这样做,在发现发生了什么并受到影响后,我会在其中放入大量的#待办事项,并修复最初的问题。通常使用这种方法时,我会使用预定义的函数或类,这些函数或类的名称应该做一些完全不同的事情,从而使项目更加可怕

那么,你是如何克服这种冲动,专注于项目,还是在修复bug或引入功能的同时,让自己一点一点地将项目变形为你更喜欢的东西

对我有用的是:

  • 试着重新编写一个中等大小的软件(可能是10000到20000行代码),然后得到的东西只比原来的稍好一点,绝对不值得你为此付出努力
  • 了解重构方法。您很快就会注意到,重构——如果做得好——不仅是单调的工作,而且可以像启动一个新项目一样有趣和具有挑战性。而且通常效率更高
  • 那么,你是如何克服这种冲动,专注于项目,还是在修复bug或引入功能的同时,让自己一点一点地将项目变形为你更喜欢的东西

    对我有用的是:

  • 试着重新编写一个中等大小的软件(可能是10000到20000行代码),然后得到的东西只比原来的稍好一点,绝对不值得你为此付出努力
  • 了解重构方法。您很快就会注意到,重构——如果做得好——不仅是单调的工作,而且可以像启动一个新项目一样有趣和具有挑战性。而且通常效率更高

  • 我认为这是一个非常好的问题。我们所有人都经历过这种情况,每个人都认为其他人的代码是,嗯,低于标准的

    我尽量把顾客放在心上。一方面,我的客户并没有很好地接受糟糕的架构或设计的代码,我可以迅速介入并解决这一问题。但另一方面,如果它有效,他也可能不会因为付给我很多钱来重新做一些已经有效的事情而得到很好的服务


    我能“偷偷”带上更好的东西吗?单元测试?小重构?有时候,长而复杂的方法是这样的,因为它们随着时间的推移已经被调整过了——如果我不小心的话,可能会破坏其中的错误修复

    我认为这是一个非常好的问题。我们所有人都经历过这种情况,每个人都认为其他人的代码是,嗯,低于标准的

    我尽量把顾客放在心上。一方面,我的客户并没有很好地接受糟糕的架构或设计的代码,我可以迅速介入并解决这一问题。但另一方面,如果它有效,他也可能不会因为付给我很多钱来重新做一些已经有效的事情而得到很好的服务


    我能“偷偷”带上更好的东西吗?单元测试?小重构?有时候,长而复杂的方法是这样的,因为它们随着时间的推移已经被调整过了——如果我不小心的话,可能会破坏其中的错误修复

    一个拥有四到五年专业经验的开发人员开始“大踏步”。他或她正变得足够有能力看到一个项目的大局。你的自我评估可能100%正确,你向他人学习的愿望将使你与众不同

    记住这一点:编程很难,而且几乎总是在胁迫下完成的。胁迫表现为几种形式:冷漠、新技术、厌倦、紧迫的期限、个人问题、疲劳

    例如,我发现了一个由我工作的首席程序员引起的问题。他是一个非常聪明的人,拥有必要的技术技能。问题是:他用单数形式描述了一个web服务,但实现了复数形式的调用。换句话说,spec:/offload_文件;实现:/offload\u文件

    这是一个很大的问题,尽管文档中有超过2万字的一个字符错误。他的妻子正准备生孩子

    你已经达到了很少人能达到的技术水平,现在你必须学会做一些不同的事情。你必须弄清楚如何工作