[其它] 一个简单数据访问接口的设计

dayn9 2007-11-06
怪我没说清楚。比如:
   1. classnf<Student>(NullType(),  
   2.                                 IntType(&Student::num, "num"),   
   3.                                 StringType(&Student::name, "name", 256),   
   4.                                 IntType(&Student::age, "age")),  
   5.                                 NullType());  


稍作改造,就可以看成是用DDL定义数据,包含了丰富的数据定义信息,甚至更进一步包括主键,索引。同时,这里面也可以通过宏伎俩隐含了类student的定义,这样保证了定义的唯一性。但程序员看不见显式的类定义了。
我说是对OO的侵入是不准确的。程序变成这个样子,是用DDL风格侵入常规风格的,我所说的常规风格指OO,SP,GP。


jimmy_c 2007-11-12
就侵入的问题说两句题外话:
1. 写程序时应该不断地换帽子。写类库程序,应该注意在“类库coder”和“客户应用coder”的帽子间调换。
   前面的代码应该是客户代码,非库代码。故而必然不存在对库代码风格的侵入问题。
   对于客户代码,风格取决于应用。数据库应用风格类似DDL无可厚非。
2. 如果对于这种风格的程序不适应,或是觉得侵入性太强,可以在类库之上,加一层API,改成function风格好了。就像最近的热贴"用C设计,用C++编码"里说的,客户程序调用API对于库开发者和应用开发者之间的版本维护会有一定好处,不算什么创见吧。
3. 其实OO风格编码本身侵入性就很强的。尤其C++不是太适合于做接口使用,编译结果不是很干净,从库中导入类不像API那样简单清楚等等。也算是对"用C设计,用C++编码"的补充吧。不过私下认为那篇文章和linus所说的话题其实有点离题万里。

Global site tag (gtag.js) - Google Analytics