我已经在Java和C#中做了一个类,允许我执行SQL查询,例如我有一个名为Delete的方法,它接受几个参数;方法设计 - 清晰或多功能
public static int Delete(String table, String column, String operand, Object value)
我有值作为对象类型作为我可能想要删除基于字符串,整数或布尔值的行,这意味着该方法是足够的灵活性来支持不同的类型。
:然后我取决于它是否是通过使用(在C#或.GetType)的 的instanceof测试用Java粗例子的字符串或不追加额外的““”字符到查询
if (value instanceof String) { System.out.println("It's a String"); } else { System.out.println("It's not a String"); }
在实现类的其他部分时,我开始思考前面提到的方法是一种理想的方法,还是我应该为特定的数据类型实现其他方法,一个容纳String,另一个容纳Integer等。
如果我着手实现这个,那么这意味着会有其他逻辑上有最小差异的方法,但是每种方法只有一个目的,使得它们易于遵循和记录。另一方面,如果我保持它的方式,那么生成和维护的代码就会少得多,它可以管理任何类型的Delete语句(就数据类型而言),并且只需要几条语句以确定通过参数传入的对象的类型。
从面向对象/最佳代码实践的角度来看,哪种方法是最好的方法?
感谢您的信息!
不要在'.GetType'上使用比较,使用'is'运算符。 'is'编译成IL指令,而'GetType'是一个非常昂贵的调用。 – Femaref 2011-03-30 18:02:17
另外,它们不是等价的; 'is'允许派生类型。 – SLaks 2011-03-30 18:04:13