Coding style 什么时候是正确的时间,什么时候是错误的时间来做快速和肮脏的解决方案?
什么时候是正确的时间,什么时候是错误的时间采取快速和肮脏的方法与适当的优雅的解决方案 这是从对我的问题的评论开始的:Coding style 什么时候是正确的时间,什么时候是错误的时间来做快速和肮脏的解决方案?,coding-style,Coding Style,什么时候是正确的时间,什么时候是错误的时间采取快速和肮脏的方法与适当的优雅的解决方案 这是从对我的问题的评论开始的: 我想要一种只使用内部Java或我编写的东西的方法。唯一的内置方式是使用不受支持的sun.*包。那么,什么时候采取这种方法是正确的,什么时候是错误的?在任何情况下,你都必须平衡用于解决问题的时间,然后平衡用于维护解决方案的时间。如果你所做的任何事情的生命周期都是漫长的,那么预先花在以正确的方式做事情上的额外时间大概会更容易维持,并且从长远来看会拯救你 但是,如果存在时间限制,则翻修
我想要一种只使用内部Java或我编写的东西的方法。唯一的内置方式是使用不受支持的sun.*包。那么,什么时候采取这种方法是正确的,什么时候是错误的?在任何情况下,你都必须平衡用于解决问题的时间,然后平衡用于维护解决方案的时间。如果你所做的任何事情的生命周期都是漫长的,那么预先花在以正确的方式做事情上的额外时间大概会更容易维持,并且从长远来看会拯救你
但是,如果存在时间限制,则翻修的罚款可能远远超过维护成本。例如,如果您必须将某个产品推出,请立即执行一个快速而肮脏的解决方案,然后将其作为bug记录,以便稍后在修补程序或下一版本中进行修复。这需要你重新做这项工作,但正如我所说,这完全是一种平衡行为,而且往往是由成本驱动的。正确的答案是,现在决不是做快速而肮脏的解决方案的时候。 但有时(当有一个大的客户库和大量的程序在那里时)更好的是用一个Q&D来发布一个修复,它可能会破坏一些东西,但肯定会修复更多
我不知道我是否正确理解了这个问题,但我将把它放在这里。就我而言,我在一个研发岗位上工作,在添加外部库时,我们需要一个漫长的审批过程 若代码被标记为实验性的,那个么将在转移到生产之前对其进行清理。我需要这个来做一个快速的实验,看看有些东西对我们来说是否有意义,是否需要快速处理数据。因此,快速而肮脏的方法是尽快完成任务的正确方法。如果我们决定进行实验,我将有时间适当地替换功能 在标准情况下,正如kdgregory在一个答案的评论中所说: Bzzt。在专业环境中,, 使用不受支持的、未记录的 特征永远不是正确的决定。 在企业环境中, “实验”变成“生产代码” 没有机会修复黑客 我认为他是正确的,当你在一个你甚至怀疑它可能会投入生产的职位上工作时,这不是合适的方法。唯一的例外是,如果您绝对没有时间进行适当的修复,但可以在某些可见的公共场所(bug tracker)将其标记为高优先级问题,并且一定能够在将来的版本中修复它。在我看来,使用快速而肮脏的解决方案(又名hack)的唯一“正确时间”是
有时候你不得不用Q&D的方式做事。在这种情况下,您需要做的是通过将脏的实现隐藏在接口或适配器后面来保护自己
举一个例子,Sun.*包目前可以工作,但将来可能不会。好的然后将其封装在实现所需接口的适配器中。然后,当Sun更改API时(希望提供像Java.BASE64这样的永久性解决方案),您可以快速更新您的实现以应对更改。在以下情况下,使用快速而肮脏的解决方案是正确的:
- 您需要快速的解决方案(假设不存在类似的专业解决方案),并且
- 你不会因为它脏而承担后果
如果你可以依靠替换快速和肮脏的黑客作为首要任务,那么快速和肮脏是合适的。在这种情况下,使用此解决方案通常是一个坏主意,这是非常罕见的。当满足以下三个条件时,我会快速地进行修复:
- 没有足够的时间来做适当的解决方案
- 修复程序及其范围是明确和包含的(很容易返回,知道修复程序解决了什么问题,可以很容易地删除,并由适当的实现替换)
- 修复是原子的或没有依赖项