Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JRuby中使用的Java对象上使用(自定义)getId方法有什么问题吗?_Java_Jruby - Fatal编程技术网

在JRuby中使用的Java对象上使用(自定义)getId方法有什么问题吗?

在JRuby中使用的Java对象上使用(自定义)getId方法有什么问题吗?,java,jruby,Java,Jruby,我非常喜欢简洁的方法名称,所以当我们的代码库有如下内容时: Account.getAccountId(); 我想添加一个别名,这样我就可以: Account.getId(); 然而,我听说。。。我的公司其他地方抱怨这可能会有什么问题,因为我定义的getId会干扰所有Java对象都拥有的内置getId,或者类似的东西。我们还使用JRuby引用旧的Java类,因此这个问题可能也与内置的Ruby getId方法有关 不过,我并不完全相信有问题(我真的很喜欢我的简短方法名)。那么,是否有人知道在定义

我非常喜欢简洁的方法名称,所以当我们的代码库有如下内容时:

Account.getAccountId();
我想添加一个别名,这样我就可以:

Account.getId();
然而,我听说。。。我的公司其他地方抱怨这可能会有什么问题,因为我定义的getId会干扰所有Java对象都拥有的内置getId,或者类似的东西。我们还使用JRuby引用旧的Java类,因此这个问题可能也与内置的Ruby getId方法有关

不过,我并不完全相信有问题(我真的很喜欢我的简短方法名)。那么,是否有人知道在定义getId方法时(在Java或JRuby中)是否存在问题,如果存在问题,它们是什么,可以解决吗


编辑:从到目前为止的回复(以及我对Java的了解)来看,问题不可能出在一些核心JavaGetID功能上(因为没有)。所以这个问题是针对JRuby用户的;如果getId“冲突”来自任何地方,那么它一定来自JRuby的东西。

我倾向于可读性而不是简洁性。对我来说,getAccountId比getId更清晰


考虑到下面的两行,foo是一个account对象就更清楚了。(虽然我不会真的把对象称为foo)


编辑时,java类对象没有方法getId()。我不懂ruby,所以你必须依靠其他人让你知道这一点。

我倾向于可读性而不是简洁性。对我来说,getAccountId比getId更清晰


考虑到下面的两行,foo是一个account对象就更清楚了。(虽然我不会真的把对象称为foo)

编辑时,java类对象没有方法getId()。我不认识鲁比,所以你得依靠别人让你知道

然而,我听说。。。我的公司其他地方抱怨这可能会有什么问题,因为我定义的getId会干扰所有Java对象都拥有的内置getId,或者类似的东西

是类层次结构的根。每个类都有
对象
作为超类。所有对象(包括数组)都实现此类的方法

但是
Object
没有任何
getId
方法。所有Java对象也是如此

然而,我听说。。。我的公司其他地方抱怨这可能会有什么问题,因为我定义的getId会干扰所有Java对象都拥有的内置getId,或者类似的东西

是类层次结构的根。每个类都有
对象
作为超类。所有对象(包括数组)都实现此类的方法


但是
Object
没有任何
getId
方法。所有Java对象也是如此。

我看到的问题是,如果后来在对象上添加了与别名冲突的getId方法(或类似的方法名),则会破坏代码。当有人拥有一个对象时,添加一个新方法应该是一个非破坏性的更改(序列化除外),但事实上,他们会破坏您的代码,因为您使用了一些别名


所以问题不是它与为所有对象定义的getId冲突,而是它可能与稍后将添加到同一类的方法冲突。解决这一问题的一种方法可能是创建一个具有短方法名的包装类,以便委托是明确的和静态的,如果添加了方法名,可能会造成混乱,但它将更具可包含性。

我会看到的问题是,对象上是否有getId方法(或类似的方法名)如果后来添加了与别名冲突的代码,则会破坏代码。当有人拥有一个对象时,添加一个新方法应该是一个非破坏性的更改(序列化除外),但事实上,他们会破坏您的代码,因为您使用了一些别名


所以问题不是它与为所有对象定义的getId冲突,而是它可能与稍后将添加到同一类的方法冲突。解决这个问题的一种方法可能是创建一个具有短方法名的包装类,以便委托是清晰的和静态的,如果添加了方法名,可能会造成混乱,但它会更具可包含性。

(虽然我不会真正称为对象foo)“我认为这是关键:在实际情况下,你会说“myAccount.getAccountId”、“bobsAccount.getAccountId”等。如果有好的变量名,很明显变量是什么,如果知道变量是什么,那么“getAccountId”与“getAccountTotal”、“getAccountPhoneNumber”一样多余“,或获取任何其他信息。我想大多数人都会同意,用类名作为每个方法名的前缀有点蹩脚,那么为什么getId应该有所不同呢?如果您使用迭代器访问帐户集合呢?我同意在每个方法前面加上类名是不好的,但是getId()非常通用,如果你能更清楚地说明它引用了什么Accounter,它会读得更好。next().getId()对我来说似乎没问题:-)对我来说getId>getAccountId,所以如果我能摆脱它,我会的,但最终这是一种主观偏好,(虽然我不会真的称对象为foo)“我认为这是关键:在实际情况下,你会说“myAccount.getAccountId”、“bobsAccount.getAccountId”等等。如果你有好的变量名,很明显变量是什么,如果你知道变量是什么,那么就说“getAccountId”与“getAccountTotal”、“getAccountPhoneNumber”或getAccount任何其他内容一样冗余。我想大多数人都会同意,用类名作为每个方法名的前缀有点蹩脚,那么为什么getId应该有所不同呢?如果您使用迭代器访问帐户集合呢?我同意在每个方法前面加上类名是不好的,但getId()是不好的
foo.getId();
foo.getAccountId();