问题标签 [code-reuse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
336 浏览

agile - 什么代码是可重用的候选代码?

想象一下,您在一家小型精益软件公司工作。您知道公司未来的竞争力在于拥有一个可重复使用的良好代码库。管理公司的重用政策以确保您今天交付,同时为未来提供支柱,这将非常重要。

在我看来,在业务中编写可重用代码有两个原因;1)在公司内部共享,以提高未来的速度和效率 2)在网络上发布和其他人将有助于改进代码(某种意义上的众包)。

当然,开发人员应该始终应用常识来重用。但是为了从管理的角度来处理这个问题,我想要一些整体的代码重用指南,以确保我们现在和未来都具有竞争力。这些指南应该鼓励开发者问“我的代码是可重用的候选者吗?”。这些指导方针应该说什么?

我最初的想法:在最低级别编写可重用的代码是不值得的(例如,我有一些在字符串末尾添加“'s”的内联代码),这样的代码太多了甚至筛选并发现有人已经这样做了。在最顶层(即应用程序)编写可重用代码也不值得,因为您的客户报告应用程序最终会被通用化为 SQL 客户端——对大多数用户来说毫无用处。

可重用代码的主要障碍:除非你知道它存在,否则你不能重用它;信任——它已经完成了,但你信任它吗?使代码通用/可重用(并记录它)所花费的初始时间。

0 投票
10 回答
9587 浏览

sql - 如何在 SQL 存储过程中重用代码?

我们使用 SQL Server 2005。我们所有的数据访问都是通过存储过程完成的。我们的选择存储过程总是返回多个结果集。

例如:

我们应用程序的数据访问层基于结果(O/R Mapper 样式)构建对象图。

我遇到的问题是我们有许多不同的发票选择存储过程。它们都返回相同的结构,只是针对不同的选择标准。例如,我还有:

我还有很多其他人,包括:

我对很多概念(客户、员工等)都有相同的模式

我们最终会复制大量代码,维护起来非常困难。当一个概念的“结构”发生变化时,我们必须去修复所有的过程,这很容易出错。

所以我的问题是:在场景中重用代码的最佳方法是什么?

我们提出了一个使用临时表的解决方案。但它不是很优雅。我会让您分享您的想法,如有必要,我将在即将发布的帖子中发布我的解决方案的详细信息,以获得您对该方法的评论。

谢谢

0 投票
8 回答
587 浏览

c++ - 克服“稍后修复”的坏习惯

当我从头开始编写代码时,我养成了在一个函数中快速编写所有内容的坏习惯,一直在想“我以后会使其更加模块化”。然后当后来出现时,我有一个工作产品,任何修复它的尝试都意味着创建函数并且必须弄清楚我需要通过什么。

它变得最糟糕,因为当您的项目几乎完成时重新设计类变得非常困难。例如,我通常在开始编写代码之前做一些计划,然后当我的项目完成后,我意识到我可以让类更加模块化和/或我可以使用继承。基本上,我认为我没有做足够的计划,而且我没有得到超过一级的抽象。

所以最后,我被一个具有大型 main 函数、一个类和一些辅助函数的程序所困。不用说,它不是很可重用。

有没有人遇到过同样的问题并且有什么技巧可以解决这个问题?我想到的一件事是用伪代码编写主函数(没有太多细节,但足以看到他们需要什么对象和函数)。本质上是一种自上而下的方法。

这是一个好主意吗?还有其他建议吗?

0 投票
3 回答
892 浏览

vb6 - 如何在我的 VB6 应用程序中重用类?

首先,由于我使用的是 VB6,请将您的建议仅限于应用于 VB6 的技术。

替代文字

如上图所示,我有一组相互关联的控件。它包括几个树视图、一个拆分栏、一个列表视图、一个子窗体(一个用户控件)等。

当我单击或更改左侧的树视图节点时,右侧控件将相应地更改其显示,反之亦然。

幕后数据保存在 Access 数据库中。

这组数据管理和显示用于几个不同的应用程序。所以我写了几个类来实现逻辑,并在我的应用程序中一次又一次地包含这些类模块。

所以我实际上是在“复制和粘贴”模式下重用我的课程。它有效,但有问题。如果我在一个类中进行更改,我必须在多个应用程序中进行更改。

这些天来,我正在考虑将它们制成所谓的 ActiveX 组件。但我不确定我应该开发哪种 ActiveX 组件来重用整个架构。

简而言之,我想知道如何才能更优雅地重用它,而不仅仅是“复制和粘贴”。以下是对新的“优雅重用”的一些想法或期望,但不限于它们。

(1) 我希望它看起来像一个具有属性页的 ActiveX 控件,以便我可以在设计时设置它的一些属性。

(2) 对于不同的应用程序,右边的子窗体可能显示不同的信息,具有不同的控件,可能需要额外的编码和设计。

(3) 此外,我可能需要为不同应用程序的树视图和列表视图编写一些新行为。这个要求使得整个表单的整个用户控件不适合。因为 MSDN 说“对 ActiveX 控件的引用,永远不应该返回给客户端应用程序。”

0 投票
8 回答
8115 浏览

c - C 中非常简单的地图实现(用于缓存目的)?

我有一个程序可以读取文件中的 url 并gethostbyname()在每个 URL 主机上执行。这个电话很费劲。我想缓存它们。

C 中有一个非常简单的基于地图的代码片段,我可以用它来进行缓存吗?(我只是不想重新发明轮子)。

它必须具有以下几点:

  • 具有许可许可证的开源(想想 BSD 或公共领域)。
  • 非常简单:理想情况下少于 100 LOC
  • 键是char*和值void*。无需复制它们。
  • 没有真正需要实现remove(),但contains()需要或put()应该替换该值。

PS:我把它标记为homework,因为它可能是。我只是非常懒惰,并且确实想避免在重新实现时可能遇到的所有常见陷阱。

0 投票
3 回答
128 浏览

ruby-on-rails - 在 Rails 中重新使用带有基本 ruby​​ 测试代码的单个文件?

我在单个文件 snippet.rb 中得到了这段代码,它按预期运行。此脚本来自 dzone 片段,该片段在当前时间获取 URL 的缩略图。

现在我想将此功能与 Rails 集成,在这里我不知道如何开始。我应该把它放在lib目录中的一些ruby文件中还是让它成为模块???我对Ruby不太流利,所以任何人都可以请教我如何以及从哪里开始?

0 投票
3 回答
1486 浏览

asp.net-mvc - ASP.NET MVC - 重用动作行为

这个问题主要与良好的设计有关。

假设我有一个控制器动作,如 DeletePage,可以在同一控制器的两个单独视图中调用。假设删除逻辑不包含在操作本身中,而是一些条件检查等调用正确的业务逻辑,当我可以有一个私有方法时,复制删除操作的结构是没有意义的返回一个 ActionResult,我在这两个可能导致删除的操作中都调用了它。我的问题是在哪里放置这样的可重用操作方法的最佳位置?现在我只是将它们标记为私有并将它们粘贴在控制器类的一个区域中,但也许密封的内部类对于这种方法或完全在其他地方更有意义。

想法?

0 投票
5 回答
2142 浏览

php - 在 PHP 中重用代码的最佳方法是什么?

代码:

我需要经常使用这段代码。唯一的区别是array_reverse (..., true)在第一个示例中。

我试图通过制作一个函数organize_question来解决这个问题来解决这个问题。我没有成功:

然后我将代码中的相关行更改为:

问题在于将变量从一个函数转移到另一个函数。
我试图将所有必要的变量放在函数的参数中,但是一切都被破坏了,因为这个函数有很多依赖项。

我是 PHP 新手,所以必须有比我正在尝试的更简单的方法来做到这一点。

0 投票
9 回答
5851 浏览

c# - 如何创建和维护代码重用库?

我正在尝试设置可重用代码的存储库。我正在考虑让每个可重用代码模块都具有一定的“成熟度”等级。评级将被定义为可重用代码位于特定要求集内的级别。最高成熟度级别将是一组预定义要求的最高标准程度。

例如:
水平;要求; 描述
0 级;代码合法使用;代码在商业行业/跨多个合同/等中使用是否合法?
1级; 基本代码行并满足 0 级要求;原型代码、第 3 方工具等
2 级;有功能接口和注释,满足1级要求;每个类和功能都有足够的文档;能够从评论中确定功能
3 级;遵守编码标准并满足2级要求;遵循定义的编码标准并通过代码检查实用程序测试
4 级;包括测试用例并满足 3 级要求;有足够的测试用例来测试代码的所有功能
5级;经重用委员会批准,符合4级要求;由重用专家和同行审查并验证它符合所有成熟度级别

我想知道这个成熟度级别是否应该是一个层次结构,为了进入下一个级别,您需要满足所有先前级别的要求(如上所示)?

或者如果它应该是满足下一个级别的要求的子集?

例如,我们满足了 y 中的 x 要求,我们可以进入下一个级别(要求与上面提到的相同)。

0 级,满足 6 个要求中的 0 个
1 级,满足 6 个要求中的 1 个
……

我在子集方法中看到的问题是某些要求应该具有更强的权重,并且在这种方法中不会考虑到(除非我开始变得具体,满足 b 中的 a 和 y 中的 x 等)。但随后它可能开始变得复杂。

以前有没有人这样做过,如果是这样,你是如何设置你的图书馆的?您是否有一个成熟度级别或其他一些结构?任何投入将不胜感激。

0 投票
5 回答
385 浏览

ruby-on-rails - 如何重用 Rails 应用程序

我为一个学校校友网站开发了一个 Rails 应用程序。现在另一所学校要我为他们开发一个类似的网站。

我想重用该应用程序。数据结构相同,但实际数据不同。设计布局将相似,但设计本身会有所不同。

一种选择是我只是复制应用程序并对其进行修改。但在这种情况下,我需要在 2 个应用程序发展时对其进行管理。

另一种选择是使应用程序通用化和可定制(尽管数据库将分开)。视图会有很多很多的分支。

我可以在数据库上使用多个应用程序,但我相信这需要很多工作。

另一种选择是将控制器和模型移动到插件中,以便 2 个应用程序共享它们。

你有过这样的案例吗?如果有,可以分享给我吗?

谢谢。

山姆