metaphor
现在发现最难的一件事情就是给类或方法起名字,原因之一是我并不能像熟悉中文一样的深谙英文的语义变化,往往在起名的时候使用了错误的隐喻,另外一个就是源于对所要设计和实现的系统的暧昧的认识,难以言简意赅的表述一个明确concepts。比如这样一些接口:
public interface IUnknown {
Object queryInterface(Class type);
}
public interface IAdaptable {
Object getAdapter(Class adapterType);
}
public interface IServiceProvider {
Object queryService(Class serviceType);
}
Object queryInterface(Class type);
}
public interface IAdaptable {
Object getAdapter(Class adapterType);
}
public interface IServiceProvider {
Object queryService(Class serviceType);
}
这些接口具有相似但又完全不同的内涵,IAdaptable总是暗示这个object将会被适配到其他的object,ISeviceProvider则隐喻这是一个提供不同服务的同一个对象,而IUnknown比较狡猾,什么也没说,请你自己去理解,这种称作Extension Object/Interface的Pattern经常出现在大型的组件系统里,但却往往有着不同的名字。一样的设计不同的名字,暗示了不同的关注,作了一阵子的architect,我发现得到好的设计并不难,而能够通过合理优雅的命名,切实的隐喻系统的关注点却非常的难。