我们所有写可重用的类和代码。

我们因素的可配置性,使我们能够一次又一次地重新使用这个梦幻般的新类。

我们告诉我们的老板,现在这个花费额外的时间将在稍后为我们节省了时间和金钱。

但在现实中,对于我们这些谁不写第三方库,并且花时间在一个应用程序作为一个整体,多少次一个类你花额外的时间写实际重用工作得到重用在另一个项目?

多少定制班你有你的图书馆将在多个项目中使用呢?

有帮助吗?

解决方案

我的拇指的共同规则是:

  1. 如果你重复一次,将其复制。
  2. 如果你重复了两遍,重构它。

其他提示

问得好!点击 我认为“设计再利用”是围绕着错误的方式。我发现我写的是工作的代码,干净漂亮的可重复使用。实际的设计的重新使用只发生第一次代码实际上被重复使用! 结果

花费时间事先设法使一些可重复使用的往往是浪费时间,因为你永远不知道将要被重新使用的。

话虽这么说,在我的工作,我们有图书馆(大,500MB或更多)的集合,它被重新使用的几乎每一个项目 - 大多是特定领域的东西,

leppie写道:

  

我的拇指的共同规则是:

     
      
  1. 如果你重复一次,将其复制。
  2.   
  3. 如果你重复了两遍,重构它
  4.   

和我想补充,确保评论添加到两个部分代码,以表明有一个错误的重复。你不想来修复它在一个部分,而不是其他(BTDTGTT)。

罗布

我在XP方法(或方法)的专家,但我认为 YAGNI 原则可以应用于此。

只有当你的修改重用的代码包含即可重新使用。

有是可配置之间的差异和reusability-前者可以在很多不同的场合非常有用,当环境改变或任何else-使事情在我理解的方式配置,主要是分开的代码的情况下和数据这只是很好的做法真的。

设计为可重用性,如果你创造一些你计划为多个项目库使用的是唯一真正有用的。随着岁月的流逝,我越来越意识到YAGNI原则,这些天,我只是要编写清洁,可靠的代码为手头的任务。我的经验是,如果事情是要再次使用时是非常不可能的,你会准确预测的如何的它需要被重用,所以更好的做法是只添加你需要的,现在的代码。如果你需要的方式来重复使用它在将来可以添加新的东西,做你所需要的东西,而无需中断您过去写的任何现有的功能试图预测你怎么可能需要它了。

您可能会发现,这个做了几次后,你有一个库,稳定和强大,不需要你去改变它,因为它实际上做了所有你需要 - 给我的东西,它更容易,以允许在比浪费太多的时间猜测的未来的演化方式发生的。

我认为最好的方法是尝试与良好的接口和类之间的职责分离的设计代码,而无需过分担心重用。但至少,如果你设计的这种方式,你要离开的可能的重用开放。一个好的经验法则是问自己:“如果我3个月后回到这个代码,我会理解它,我可以扩展它,如果我不得不?”

IMO在行业最差的业务之一是当一支球队给出反超熄灭,写自己的“可重复使用的”框架....

我喜欢在那里你不断扩展语言的LISP模型。最终,你风与您的问题域特定领域的语言。并非是我写的任何口齿不清,但在我最常使用的语言--- Lua中和C现在---我经常拉出来的东西变成一个模块并重新使用它,而不是复制和修改。

有关C程序员,这种方法的典型的例子是戴夫Hanson的书 I2C接口和实现的。戴夫抓住每一个可重用的想法是他这么写三四编译器和把它们都在一本书---和软件是免费的。神话般的东西。现在,如果我写的C代码,我想用它第二次,我使汉森风格的界面。有些事情我做了这个词:2维数组,二维数组与封闭,对PBMPLUS文件的2维位图,读者和作者,等等。有了这个基础设施的地方很容易写一个程序,我一直在想了多年,这是从书页的复印件的扫描去除黑边。

所以,我同意任何人说,当你想重新使用它,将其拉出---而不是之前。

IMHO,某些代码很可能被经常重复使用,是有意义的频繁重复使用做准备。其他的代码也没有了,可能并不需要被开发以后解决眼前的问题。

当然,不用注意,告诉差是NP难题。 :)

如果你确定你不会再需要它,不要打扰。甚至没有,如果你认为它的可能的派上用场。重构它,当你真的需要再次它...

然而,不是使之可重复使用的是没有理由不使它透明。每当我尽可能透明地编写代码,它总是原来是99%,可重复使用已经...

一旦你的技术公用事业级以上我都很少见到实际重用在现实世界中。

如果你仔细想想的原因是显而易见的。说widget_bodger应用含有90%的你需要比你想补充缺失的功能到应用程序的功能。

或者说企业推崇的widget_bodger一个非常酷的“嘟嘟”的功能,并希望将其纳入了gernerate_executive_expenses应用。阿resuse你可能会想,但你挖成的代码,发现GEE应用是公司最老的应用程序之一,是用C写的,必须运行于高度可用的硬件,并且是可重复使用的唯一的事情是基本的算法。

有什么使代码可重用的意见分歧很大。我说你的时间花在代码清晰和良好分解(即责任之间的分离)。

从这个附带的好处是可重用性较好。主要的好处是使代码更容易理解,变化和调试。

要包起来。不要做复杂的配置方案,扩展点和事件只是为了重复使用。试图找到移动部件的权利,以便代码可以响应于新的需要组成。

往往是“可重复使用的”代码是代码,抽象化和模块化,以及对我来说,最大的好处是不重用,反而增加了可测试性。因为当你隔离和模块化的代码通常变得更加可测试。重用是一种方便,但往往未使用的副作用。

和在另一方面,Juval洛瑞倡导基于接口的编程,因为他认为,接口是可重复使用的鞋底组件。别的已暗示功能性(难以重新使用),而接口定义仅一个合同,其是可重复使用的隐式

我只要你同意,因为在的方式,使得类容易当前应用程序之外使用的编码是没有意义的。大多数如果我们不这样做,并在商业环境就没有必要。如果另一应用程序需要在稍后的日期然后提取和commonalising代码此功能可以完成作为第二项目的一部分,和管理很可能与此观点一致。

然而,它是很好的做法,使当前应用程序的限制之内你的代码重用。重构代码,以避免当前的工作范围内重复。这样你更容易地与在日后的工作。做以重新用作用于改变不那么多的代码,改变是更为常见。

一,为什么SOA已经失败,或者尚未解除的还的原因,就在于它是很难重用服务:要么过于具体,也不能在其他地方使用,或过于通用的(而且通常很复合物)和不符合不同客户的需求。

这是不是“代码重用”,它的“服务重用”,但也有一些共同的概念。

我2C是,代码重用的道德必须是一个企业的事情,而不仅仅是一个项目的事情。这意味着,当你开始一个新的项目,主要关注的是“这等项目上,我所得到这份工作做,以及窃取代码,并尽可能快地?”

这将与问题冲突“什么是最好的 - 或时髦? - 为工作语言/工具”

这是有这种做法最终与工程师,他们可以很容易地从项目切换到项目池,因为语言,框架和内部代码库都是一致的公司。

在不利的方面是,切换到“新”语言或框架更加政治上的困难,即使它需要在某个时候发生的。

重用另一个好处是,可以easiliy轨道里的东西在oode碱发生。如果你有一百万行代码,它可能需要几个小时找到了应用程序的行为在某些方式的所有地方。拥有现代化的IDE,你可以点击“查找引用”,你会发现,几秒钟之内,在使用您的组件/方法的所有地方。当你想添加新的功能,修复bug或只是想了解系统如何工作这可能是有用的。

我们有几个,但我们有更多的是与你想,但以自己的方式完成的功能项目,让更多的往往不是你最终从旧项目拆功能,并在新的重新实现它们。我认为,这仍然计数 - 你仍然得到具有前编写的代码的好处,你仍然保存时间

另外,我发现,这只是你尝试使用它变得很明显,其中可重用性的功能,第二次,如果你尝试和推广了一些推测你几乎总是能得到它错了,必须改变它下一次。

像其他的海报说,如果你要复制的代码,然后再使用,你会很高兴你这样做,一旦你开始调试你复制的代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top