不要重复自己-代码上的实用提示

重复是软件中所有邪恶的根源,因为重复代码非常容易,这会导致很多问题,例如代码维护困难、潜在的错误增加和生产力下降。

复制是一个如此大的问题,以至于它的原则被创造出来了。它的名字是“不要重复你自己”或“DRY”。DRY的前提是,通过不在整个系统中重复相同的代码,开发人员可以提高代码的质量,并随着时间的推移使其更易于管理。

在这篇博客文章中,我与大家分享了一些可以用来最大限度地减少代码重复的实践。

以下是一些特别是在Java中需要遵循的提示:

模块化代码:将代码分解成更小的、可重用的函数或类。这允许您封装特定的功能并在多个地方使用它,而不会复制代码。我在这里写了更多关于这方面的详细信息。

使用函数作为参数:不要编写带有微小变化的相同代码,而是通过接受参数来创建可以处理不同场景的函数。通过这种方式,您可以重用具有不同输入的函数,从而减少重复。

使用库和框架:Java提供了大量库和框架,这些库和框架提供了预构建的功能。与其重新发明轮子,不如利用这些库来执行常见任务。这不仅节省了时间,而且减少了重复代码的需要。

抽象公共代码:识别代码库中的模式或公共功能,并将它们抽象为可重用组件。通过创建抽象,您可以将重复的代码合并到一个地方,并在任何需要的地方引用它。

分离关注点:保持代码的组织性,并保持关注点的清晰分离。代码库的不同部分应该处理特定的任务,而不会有重叠的职责。这有助于防止重复,并促进更模块化和可维护的代码库。我在这里写了更多关于这方面的详细信息。

在这篇文章中,我们将看到DRY使用函数作为参数的示例,然后了解如何抽象公共代码

Java中使用函数作为参数实现DRY的示例

使用函数作为方法的参数是减少代码重复并在编程中遵循DRY原则的常见方法。这种技术被称为传递行为。这里有一个例子来说明使用函数参数如何帮助我们消除代码重复。

问题

假设我们有两个函数对列表执行相同的操作,唯一的区别是它们对列表中单个元素进行操作的逻辑

解决方案

我们将创建方法filter(),该方法接受一个整数列表和一个函数作为参数。该函数用于定义过滤数字所需的行为(偶数、奇数或任何其他过滤器)。

 

 这是主要的方法

 

当一个方法接受函数接口作为参数时,我们可以定义不同的行为,并将它们传递给一个方法来对数据执行不同的操作,而无需多次重复相同的逻辑。在这一部分的最后,我鼓励您研究Java功能接口API,这是一个很好的起点。

在类层面上,同样可以使用策略模式来实现。

在类级别上,使用策略模式也可以实现同样的效果。Java中的示例如何抽象公共代码以实现DRY

抽象公共代码并不意味着我们必须有一个抽象类,它只是实现它的方法之一。抽象意味着隐藏不相关的代码,以创建可在各种上下文中使用的通用、可重用的代码,而不是为每个特定上下文重复类似的代码。让我们在实践中看到这一点 

问题

要在数据库中保存数据,我们需要创建到数据库的连接,准备SQL语句,执行它并收集结果,所以每次需要保存数据时,我们都会重复这些代码块,这意味着我们有重复

解决方案

在第一步(识别重复代码)之后。下一步是通过隐藏不相关的细节(抽象)来提取它,并使其可以从一个点访问(可重用)。在Java中,这可以是一个方法或类

为了提取重复的代码,隐藏不相关的细节,并拥有一个单一的访问点,我决定使用Java singleton类。

我正在使用另一条规则来实现DRY,你能找到它吗,这里有一些帮助

什么时候应该选择抽象类或接口?

如果您有一些变体,那么选择抽象类或接口。

我们可能需要将数据保存到文件中,因此解决方案可能如下

 

DRY面临的挑战

尽管这篇文章的目标是与您分享您可以在代码级别应用以实现DRY原则的最佳实践。我必须指出,DRY(不要重复你自己)原则更广泛,它是关于处理知识的,我们不想重复知识或意图,我们也不想在两个不同的地方表达同一件事,尤其是以完全不同的方式。

我们面临的挑战是,并非所有的代码重复都是知识重复。因此,在识别重复的第一步中,寻找知识重复的地方,并尽量将其最小化。

如果你需要违反DRY,试着将影响本地化,这样违规行为就不会暴露在外界。

猜你喜欢

转载自blog.csdn.net/haming11/article/details/130952992