Tag: 语言不可知

Java反思和重构的痛苦

Java Reflection提供了一种在运行时对Object进行内省的机制。 没有第二个想法,这是一个很棒的function,但它打破了所有重构惯例! 即使在现代IDE中也没有简单的方法( File Search除外)知道引用了哪个属性以及在哪里。 这使得Refactorings变得更加复杂(令人厌烦!)并且容易出错。 坦率地说,它不仅仅是Reflection API ; Hibernate mapping files (hbm.xml)和JSP files都将属性称为String,当您重构属性名称时,您必须手动更改所有这些位置。 更糟糕的是,Hibernate映射文件或JSP文件中的更改会导致运行时错误。 我很想知道其他程序员如何在Java中处理这个问题。 有一些工具吗? 我使用Eclipse / IBM RAD作为主要开发平台。 通常我们使用constant来定义属性并尽可能地使用它,但它并不总是可行的。 我也有兴趣其他语言如何处理这个!

构造函数中的虚函数,为什么语言不同?

在C ++中,当从构造函数中调用虚函数时,它的行为不像虚函数。 我认为第一次遇到这种行为的每个人都感到惊讶,但第二次认为它是有意义的: 只要尚未执行派生构造函数,该对象就不是 派生实例。 那么如何调用派生函数呢? 前提条件没有机会建立。 例: class base { public: base() { std::cout << "foo is " << foo() << std::endl; } virtual int foo() { return 42; } }; class derived : public base { int* ptr_; public: derived(int i) : ptr_(new int(i*i)) { } // The following cannot be called before […]