使用不同参数优化重复功能

时间:2018-02-22 01:43:31

标签: java optimization coding-style

我有两个完全相同的函数和一个不同的函数,它们将TypeX作为参数。所有TypeX都具有相同的父类Type。虚拟代码如下:

atexit.register(greet_me, text1, name='peter', age= 32, gender = 'male')

我想知道有没有一种优化这些功能的好方法?我的代码需要根据类类型选择正确的函数,所以我不能在这里使用父类或泛型类型,因为这会影响TypeC的参与。

最好的事情是public void Append(TypeA item) { //same code } public void Append(TypeB item) { //same code } public void Append(TypeC item) { //different code } ,但当然没有这样的东西可用。有什么想法吗?

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

虽然@ erwin-bolwidt提供的解决方案可行,但我建议你也考虑一下

select * 
 from table_name 
where EMPLOYEE_ID = 'C000850'
and TA_FROM_DATE = cast('02/21/2018' as date)

这种方法将允许更松散的耦合以及未来专门的记录和扩展的潜力

答案 1 :(得分:1)

在编译时根据对象的声明类型(不是实际类型)选择要调用的方法。将TypeA和TypeB的Append合并到一个采用import * as axios from 'axios'; axios.defaults.withCredentials = true; export function getAll() { const url = 'https://example.com'; return axios.get(url); } 参数的方法中是安全的 - 它与当前代码没有区别。

但是如果要选择实际类型,则需要使用Type item。或者您在类型上创建一个方法,在instanceof方法中返回您需要的任何内容。

append

或更清洁,如果唯一的区别在于你从物品中得到的东西:

public void append(Type item) {
    if (item instanceof TypeC) {
        // Do TypeC-specific stuff
    } else {
        // Do stuff for TypeA, TypeB, and any other subtype of Type
    }
}

答案 2 :(得分:1)

您可以为TypeATypeB创建父类。然后使用此类型作为重载函数的参数。

这样可以避免重复代码。

另一种方法是让这些类实现一些接口,然后使用这个接口作为重载函数的参数。

第三,您可以使用泛型类型和委托实现到相应的函数。

答案 3 :(得分:0)

在java中很简单,你可以使用方法重载

来完成它
public class example{

public static void print(String s) {
    System.out.println("string - "+s);
}

public static void print(int q) {
    System.out.println("number - "+q);
}

public static void main(String[] args) {  
    print(12);
    print("welcome");
}
}

输出

number - 12
string - welcome