1. 反射机制(C#,Java)
Java反射是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。
Java反射机制容许程序在运行时加载、探知、使用编译期间完全未知的classes。
换言之,Java可以加载一个运行时才得知名称的class,获得其完整结构。
citation: http://www.cnblogs.com/quincy/archive/2011/06/19/2084557.html
C#反射:程序集包含模块,而模块包含类型,类型又包含成员。反射提供了封装程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了属性,可以利用反射对它们进行访问。
反射是一种允许用户获得类型信息的C#功能。术语“反射”源于它的工作方式,Type对象映射它所代表的底层对象。
Using .NET: Avoid Common Performance Pitfalls for Speedier Apps
-> msdn.microsoft.com/zh-cn/magazine/cc163759(en-us).aspx
when:
1).根据契约(contract{interface or base class},与扩展点相关)编程,第三方插件库负责对契约进行实现
2).一个程序集中只调用一部分类
此示例使用反射获取已加载的程序集的完整名称:
// Using Reflection to get information from an Assembly: System.Reflection.Assembly o = System.Reflection.Assembly.Load("mscorlib.dll"); System.Console.WriteLine(o.GetName());
输出为:
mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
反射在下列情况下很有用:
-
需要访问程序元数据的属性。请参见主题使用反射访问属性。
-
检查和实例化程序集中的类型。
-
在运行时构建新类型。使用 System.Reflection.Emit 中的类。
-
执行后期绑定,访问在运行时创建的类型的方法。请参见主题动态加载和使用类型。
citation:http://msdn.microsoft.com/zh-cn/library/ms173183(v=vs.80).aspx
反射与接口实现、继承结合起来,更能发挥出它的优势。
citation:http://blog.csdn.net/xiaolei1982/article/details/2294364
C#反射之Assembly.Load,Assembly.LoadFile 与 Assembly.LoadFrom方法的异同,参见:http://blog.chinaunix.net/uid-26790551-id-3188017.html
2. 单元测试(C#,Java)
多数Java的开发环境都已经集成了JUnit作为单元测试的工具,如Eclipse。扩展TestCase类即可编写测试用例。
Visual Studioi也集成了单元测试功能。其中多用到断言Assert类的静态方法来对结果做判断。
3. svn,cvs,git版本控制工具,便于团队协作开发,能够共同维护整个程序版本。
4. Config.xml用户自定义属性设置,在程序加载时载入,可以较为方便用户更改自己的各种配置。
5. 用户自定义事件...