Java常见的Try/Finally block 围绕不同的代码块 - 代码风格

标签 java code-standards

我有相同 if() { try { < SOME CODE > } finally { } } else {}我在 3 种方法中使用的 block 。

每种方法中唯一不同的是<某些。

是否有任何编码模式可以用来“干燥”我的代码?理想情况下希望提取 if() { try { } finally { } } else {}到一些常见的结构并将传递给它。这在 Java 中可能吗?

谢谢

最佳答案

您可以引入一种通用方法来分解公共(public)部分。

然后根据您的要求,您可以这样做:

1) 如果 3 个方法位于同一个类中:提取 3 个特定方法中 try 主体的每组语句,并将该方法作为 Runnable 参数传递在通用方法中。
例如:

public void commonMethod(Runnable methodToInvoke){

     if() {
            try { methodToInvoke.run() } finally { } 
     } 
     else {}
}

并通过传递 3 个提取的方法来调用它:

commonMethod(this::methodFoo);
commonMethod(this::methodBar);
commonMethod(this::methodFooBar);

2) 如果这 3 个方法位于不同的类中:引入这 3 个类将实现的接口(interface),并使公共(public)方法接受该接口(interface)的参数。

例如,引入了Processing接口(interface):

public void commonMethod(Processing processing){

     if() {
            try { processing.doThat() } finally { } 
     } 
     else {}
}

并通过传递 Processing 接口(interface)的 3 个实现来调用它:

commonMethod(foo);
commonMethod(bar);
commonMethod(fooBar);

关于Java常见的Try/Finally block 围绕不同的代码块 - 代码风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52784197/

相关文章:

java - 对值求和并将其存储到数组中

php - 在 PHP 函数/方法中返回的最佳实践

php - HTML 模板中的 PSR-2 兼容内联 PHP 标签

.net - Visual Studio 2017代码样式“错误”不会阻止生成吗?

java - 我需要编写一个java程序,不断提示用户输入句子。然后反转字符串仅在输入停止时退出

java - 在网站中嵌入 DWG 文件

php - 最佳实践 : returning multiple values

javascript - WebDriver:WAITING 'JS Popup Screen' 加载而不使用 Thread.sleep()

java - Jackson 映射器不在 arrayList 中映射类