问题标签 [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 投票
6 回答
6858 浏览

php - 当 if-then-else 太多导致代码不可读时,如何坚持 Don't-Repeat-Yourself (DRY) 原则?

我想坚持 Don't-Repeat-Yourself 原则,但有时当我将 PHP 与 HTML 和 CSS 一起编写时,如果我在不同的情况下重复使用相同的代码,我的代码很快就会有很多 if- then-else 代码不容易维护。

如果使用Smarty这个模板引擎,这可能是一个更大的问题,因为大多数代码编辑器不会匹配{if} {else} {/if} 所以程序员需要直观地寻找匹配的标签,并不容易当有 3 或 4 层嵌套 {if} {else} {/if} 时。

在这种情况下,有没有办法坚持 DRY,但仍然有良好的可维护代码?

0 投票
1 回答
714 浏览

apache-flex - 如何构建共享多个组件的多个 Cairngorm MVC 项目?

我最近在 Flex 中完成了一个自定义报告 UI 的项目。现在,我的任务是创建一个新应用程序,它本质上是原始 UI 的“精简”版本。它将仅包含原始应用程序中的几个选项。此外,它需要是一个单独的应用程序。

我不想复制我的代码,所以我计划将一堆类从原始应用程序移动到一个可以由两个应用程序共享的新库。但是,我试图弄清楚如何在我的 MVC 环境中进行这项工作。

例如,我有一个 Accordion 组件,它允许用户过滤多个项目。每个 Accordion 子组件都是具有两个列表的自定义组件的实例(一个用于可供选择的实体,另一个用于用户选择的实体)。每个子组件都有绑定到模型的属性和调用 Cairngorm 事件的函数。

这是一个简化的示例:

ArtistFilter.mxmlLabelFilter.mxml与GenreFilter.mxml的设计几乎相同,但用于它们的特定事件。

那么我该怎么做呢?将我的模型移动到共享库中是没有意义的。我基本上只想在库中创建 View 组件。我在这里完全不喜欢我的摇杆,还是什么?

0 投票
4 回答
255 浏览

.net - .NET 3.5 是否有广泛使用的模式和接口库?

我想避免在我的项目中编写我自己版本的 IFactory、ILog、IRepository 和其他常见接口和实现,但发现包含这些的常用库往往专注于特定的具体子系统(一个 ORM,一个 IoC 容器,一个记录器)。我遇到了一些看起来更抽象的东西(NCommon 有三个存储库实现),但我想知道您是否可以添加或推荐一些?

谢谢!

詹姆士

PS - 我最初的问题有点过于笼统,但我非常感谢您的回答和建议,并将全部检查。

0 投票
12 回答
2708 浏览

refactoring - Code reuse and refactoring

What's best practice for reuse of code versus copy/paste?

The problem with reuse can be that changing the reused code will affect many other pieces of functionality.

This is good & bad : good if the change is a bugfix or useful enhancement. Bad if other reusing code unexpectedly becomes broken because it relied on the old version (or the new version has a bug).

In some cases it would seem that copy/paste is better - each user of the pasted code has a private copy which it can customize without consequences.

Is there a best practice for this problem; does reuse require watertight unit tests?

0 投票
1 回答
625 浏览

c# - 同一实体的多个表示

在考虑避免代码复制时,我每次开始开发新系统时都会遇到一个问题:

假设我们有一个系统,我有一个客户,必须在存储库中对其进行 CRUD 并将其显示为 Web 服务中的资源。

考虑与客户相关的类,我们会(好吧,我永远不会真正使用这些名称):

  • CustomerEntity,表示用于做系统逻辑的实体;
  • CustomerRepositoryEntity,表示将要存储的表行;
  • CustomerXMLEntity,代表 XML 节点“客户”;

似乎我将拥有三个实体,并且所有客户的属性都将在每个类中。我想知道是否没有办法或模式将这三个类合并到同一个实体中,简称为“客户”。

这样,每次我需要创建“客户”的新表示时(例如,如果我想将其表示为 Json 元素),我不需要为其创建新类。我知道这是一个非常特殊的问题,但我只是想知道它是否比我现在的做法更容易(和更好看)。

0 投票
5 回答
4128 浏览

c# - 使用 System.Attribute 类

我让自己陷入了使用 System.Attribute 类似乎(乍一看)是个好主意的情况。

我有一个要在我的应用程序中打印的对象,并且我需要在每个属性之前有一个标签(或者在它之前只是一个字符串)。我可以将每个属性硬编码为:

依此类推每个属性。但不是它,我试图创建一个不需要硬编码这个“标签”的代码,这样我就可以动态地打印每个属性。

我得到了类似的东西,使用 System.Attribute 类:

所以我的问题来了:检索这个属性的值不是不可能的,但它并不友好,因为我不得不使用一些反射。

我并不是真的害怕使用反射,但似乎我正在使用属性来处理它不是为它创建的东西。

我想知道使用属性的最佳位置在哪里,如果这真的是使用它的情况。

0 投票
11 回答
6280 浏览

language-agnostic - 代码重用的缺点是什么?

几年前,我们需要一个 C++ IPC 库来通过 TCP 进行函数调用。我们选择了一个并在我们的应用程序中使用它。一段时间后,很明显它并没有提供我们需要的所有功能。在我们软件的下一个版本中,我们抛弃了第三方 IPC 库并用我们自己编写的库替换它。从那时起,我有时会怀疑这是否是一个好的决定,因为事实证明这是一项相当多的工作,而且显然感觉像是在重新发明轮子。所以我的问题是:代码重用是否有缺点来证明这种重新发明的合理性?

0 投票
3 回答
439 浏览

oop - 一些可重用代码的架构

我正在编写一些小型、简单的应用程序,它们共享一个共同的结构,并且需要以相同的方式做一些相同的事情(例如日志记录、数据库连接设置、环境设置),我正在寻找一些关于构建可重复使用的组件。代码是用强类型和静态类型的语言编写的(例如 Java 或 C#,我必须在这两种语言中都解决这个问题)。目前我有这个:

有没有更好的办法?也许如下?我很难权衡取舍...

一个明显的权衡是,使用选项 2,“框架”无法将应用程序包装在 try-catch 块中......

0 投票
7 回答
4185 浏览

language-agnostic - 是否存在:重复代码查找器?

在不久的将来,我将继承一个有点大的项目。我最近一直在对其进行一些小的更新,并注意到它的某些部分可以使用一些重构,因为有些方法可以执行相同的操作,但差异很小。

我想知道是否有一种工具可以获取一堆源代码并找到类似的代码块,以便可以识别它们以进行可能的重构。如果存在模糊搜索,那就太好了,这样它就可以识别类似的操作(而不是逐字重复的代码块)。

我不指望程序会重构代码本身,只是识别潜在的重复。

我的平台是 C#,但任何解决方案都会有所帮助

0 投票
3 回答
1402 浏览

c# - 在 Reporting Services 中重用来自 MVC 应用程序 (DLL) 的业务逻辑

我有一个业务对象,它编译成一个 DLL,它为我的系统处理资格等概念的所有计算。该对象还通过围绕它的一些包装器处理与数据库的连接。

有没有办法获取这个 .NET DLL 并将其用作报告服务报告 (SSRS) 的数据源?我们不想在多个地方都有逻辑。

编辑
如何在 Web 应用程序本身的 Web 服务中公开功能并让报表连接到 Web 服务?以前有人做过吗?如果有帮助,我们正在将 asp.net MVC 用于我们的 Web 应用程序。