`
achun
  • 浏览: 306635 次
  • 性别: Icon_minigender_1
  • 来自: 河南郑州
社区版块
存档分类
最新评论

编程技巧,基于大小写的契约式编程

阅读更多

契约式编程就是说在开发中规定一套变量,函数以及数据的规则,所有代码都遵循此规则进行开发.这种方法其实是无处不在的.因为所有的代码都是有规则的.这些规则都可以称之为契约.
笔者在进行一些开发之后,对于web开发中的数据查询,数据更新,数据条件的通讯,痛恨之极,因为要根据需求的不同细致按照行为的不同去分别用不同的方法处理这些数据.比如有这样的数据传向后台

{
name:"you",
pw:1234
}

仅仅看这些数据,我们无法认定这些数据是让后台查询的还是更新的.因为这和对应的行为有关,
如果行为是login,那应该是查询,如果行为是updatepw那应该是更新.

那能不能找到一种方法,制定一个契约,来让这件事情更方便一些?
笔者想到了一种方法:
基于大小写的契约
对于数据库字段名来说,统一大小写不是问题

所以可以这样设计契约(反之亦然):

1. 纯小写表示 数据库 查询条件

2 . 大写表示 数据库 提交数据

3.大小写混合表示非数据库字段

 

当然代码要配套的检查大小写的区别.具体代码不是问题,这和你的应用架构有关,不过此契约可以简化很多东西,关键这是一种可以模式化的契约

 

=========ps========

我来举几个例子:

{name:"you",pw:1234}

 

表示查询条件为 name='you' and pw='1234',但是没有规定返回的字段范围

 

{name:"you",pw:1234,Filds:"name,id,age"}
 

这回就有了,很明显Filds是大小写混合的,所以经代码处理后可以用来确定要返回的字段(当然要处理权限的问题了,这个不在本文中讨论 ),这样就可以的到这样的语句(当然表的名字和请求的行为是绑定的 )

select name,id,age from youtabl where name='you' and pw='1234'

 

 

{name:"you",PW:1234}
 

很明显这个就可以对应update语句了

update youtable set PW=1234 where name='you'

 

 

{NAME:"you",PW:1234}

同理这个可以对应

 

insert into youtable (name,pw) VALUES('you',1234)

 

 

关键:由于契约数据的原因,这些语句都可以通过一定的算法自动生成

 

 

2
0
分享到:
评论
2 楼 achun 2008-10-28  
dayang2001911 写道

1. 纯小写表示 数据库 查询条件

2 . 纯 大写表示 数据库 提交数据

不懂了。

我的最终目的是这样的。
首先前后台通讯都有所谓的行为,不管这些行为是属于查询行为还是更新(插入数据也算)。
最终都要根据数据生成相应的sql代码。
可是对于相同的数据结构(就像文中提到的),要生成不同的
insert/select/update语句,
对于insert也许不需要条件,
对于select经常需要条件,而且对返回的字段也要求有不同的参数定义
对于update就更是条件和更新字段同时都要进行定义。
如何找一种数据契约可以自动满足上述的需求?
通过大小写的配合就是一种方案。
1 楼 dayang2001911 2008-10-28  
1. 纯小写表示 数据库 查询条件

2 . 纯 大写表示 数据库 提交数据

不懂了。

相关推荐

Global site tag (gtag.js) - Google Analytics