如何处理代码重用的哲学?


10

在开始新项目时,我经常发现自己在考虑代码重用。

我应该在多大程度上使代码可重用?
我应该将其限制在应用范围内还是应该使其在项目外部可重用?

有时候,我觉得代码的可重用性可能会妨碍简单的设计。请分享您对代码可重用性的理解和方法。


Answers:


21

该代码必须工作才能重用。因此,这意味着设计和(主要)功能应在考虑代码重用之前进行。

考虑重用和重用已经编写的组件是一件好事。但是有时编写代码并使其运行起来可能一样快,甚至更快。解决原始问题后,可以重构代码以使其更可重用。


2
第一句中的“是”是否打错了“有”?

@delnan-什么是“?” :-)感谢您抓住这一点。

9

请记住,KISS和YAGNI:

代码re-usability better to be considered一旦你有你的设计文件准备好。这将使您看到可能重复的代码部分。

因此,当您没有清晰的设计时,请在工作中应用KISS和YAGNI方法!


1

这是从我的经验中得出的,但是仍然相信它可以应用,并且遵循GlenH7所提到的方法。

我在3家从事各种项目的公司之间工作。两家公司互为姐妹,拥有一些标准做法和工作方法,但在很多方面也很独特。话虽如此,我通常会重新开始每个项目,并想完成它或显示进度。然后,如果遇到一个我记得为上一个项目编写的代码或功能的场景,我将做以下两件事之一(与时间有关):

  1. 最快的方法
    将另一个项目中的先前代码(没有很多时间)复制到我当前的项目中。
  2. 次快速方法
    复制先前的代码并将其放入公共库中,然后将该库包含在当前项目中(以使前进更加容易)。

    2b。如果我对另一个(原始)项目进行了更改,则将其重构为使用新的库(但除非我必须重新修改该项目,否则通常不会这样做)。

只是被警告,请测试一下普通库中的内容。通用库意味着创建依赖关系。依赖关系会导致故障点。尽管您可能需要对当前的实现进行一些微调,但您不知道它将如何使用该库更改其他内容。


当您可以拥有四个或五个相同的东西时,为什么要使用单个实现?您的“最快”方法仅在近期内最快。
卡勒布

@Caleb:同意。从来没有说过最后期限就是最后期限很优雅。在重构期间,我将使用相同的代码识别多个项目,然后将其分解为自己的库。但是,当我需要将其发布时,复制粘贴就可以了。这也使我可以灵活地对该项目进行修改,在我突破库并希望使其既牢固又灵活时,我牢记这些更改。
布拉德·克里斯蒂

1

有时,我发现复制并粘贴几行代码是一个更好的解决方案。即使是人类语言,当您想说一句话之前您说的句子时,只要稍加修改即可,您也可以重复使用该变形,因为这对任何人都减少了麻烦。

但是,如果您需要以不支持的稍有不同的方式来使用大型模块,则不要克隆它来仅仅修改几行,因为您很可能希望扩展基本功能和扩展功能。克隆未来的份额。相反,只需使其可配置或将基础库和克隆库共享的功能导出到它们都将使用的另一个模块中即可。


0

不要过分。而且,如果不确定,请坚持使用应用程序范围,直到编写了足够的项目以查看可以在哪里重用。

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.