="t18">
我从1990年就开始编写PL/SQL代码
这意味着我已经编写了几万行
软件Software代码
但我确信
其中
绝大多数代码都非常拙劣
而且难以维护
幸运地是
我发现找到并遵循编写出更好代码
新思路方法还为时不晚
就是在去年
我
代码质量有了显著改进;这些改进主要是由于制定了
些简单
规则
并像纪律
样加以遵守
所有工作都独自完成
我们很少有人是孤立工作
;大多数PL/SQL开发工作是在相对较大
机构中进行
但我们基本上还是在自己
小隔间里用自己
设备独自工作
几乎没有PL/SQL开发小组进行正规
代码复查或系统测试
我不可能通过这篇文章改变你们开发小组
基本状态
因此
我仔细地选取出以下几点建议
实施其中任何
点并不需征得治理人员同意
不论你
小组是大是小
都不必让其中
每个人都赞同这些编码规则
你只需按以下建议来改变你
本人
编码方式:
1. 严格遵循命名约定
似乎它们就是你
生命支柱
2. 戒除编写SQL
嗜好:编写
SQL越少越好
3. 使执行部分短小:离别"意大利面条式
代码"
4. 找
位伙伴:非常赞同找个人来监督你
工作
1. 遵循命名约定
假如你建立并严格遵循
套命名约定
非凡是对于应用
组件
你就可以节省很多时间
当然
遵循命名约定
想法并没有什么新意
你可能已经听烦了
所以我并不提出什么宏伟
命名计划
而是给出
些非常具体而明确
约定
然后证实这些约定会多么有用
前几个月我
直在为PL/SQL开发人员设计、构建
种新工具
它名为Swyg(可以在www.swyg.com中找到)
可以帮助
员完成代码
生成、测试及重用
工作
它具有几个独特
组件
我为每个组件指定了
个由两个字母组成
缩写名称
如下所示:
SF-Swyg基础部件
SM-Swyg元数据
SG-Swyg生成
SL-Swyg代码库
ST-Swyg单元测试
于是
我便遵循表1中
命名约定
同时使用这些缩写
遵循这些约定有什么好处呢?
般来讲
假如我要求
致
命名规则
我就可以更流畅更高效地编写代码
明确地说
这些约定具有可猜测性
意思是说我编写
SQL
能生成有用
脚本
例如
通过使用表1中
约定
可以生成Swyg中所有基础包
安装脚本
执行这些工作
SQL*Plus脚本如清单1所示
这类脚本非常有用
它意味着我不必手动维护安装脚本
当我向Swyg方案中增加另
个表
并生成
组相关包时
我只要运行我
脚本
更新后
安装脚本便会跳出来
2. 戒除编写SQL
嗜好
编写
SQL越少越好
这似乎和我们
直觉不太
致
对于PL/SQL开发人员来说
这是
个奇异
建议
PL/SQL
主要优点的
就是可以毫不费力地在代码中编写SQL语句
不过
这种简易性也是这种语言
个致命
弱点
可以将纯粹
SQL语句直接置于PL/SQL代码中
而无需JDBC或ODBC的类
中间层
因此
无论何时何地
PL/SQL开发人员只要需要SQL语句
他们通常就会向其应用
代码中嵌入SQL语句
那么这样做有什么问题吗?
在PL/SQL代码中到处使用SQL语句必然会导致以下后果:
尽管实际表现区别
但同
逻辑语句仍会出现重复
从而导致过多
语法分析
且难于优化应用
性能
暴露商务规则和方案
这直接在SQL语句中包含了执行商务规则
逻辑
这些规则总在变化
所以应用
维护成本会急剧增加
当然
你要编写
每
个PL/SQL应用
几乎都是基于基础表和视图
你需要执行SQL语句
问题不在于是否执行
而是何时执行、如何执行
假如你对数据结构进行封装
或者将它们隐藏于
个PL/SQL代码层(通常是
个代码包)的后
那么你
应用
将会更健壮
而且你还会发现创建和维护变得更易多了
我们来看
个简单
例子
假定我需要编写
个处理某员工工作
第
件事是获取该员工
全名
定义为"姓名逗号(
)姓";然后我可以进行具体分析
清单2给出了这种情况下我很可能要编写
这类代码
个举例
切似乎都是这么简单和直接;这些代码可能会有什么
呢?实际上真是非常糟糕
最主要
是我暴露了
个商务规则:全名
结构
我可能要花费数小时来对此代码及其所基于
应用
进行测试
但就在它刚刚投入使用时
我才知道客户会不断地打电话告诉我
实际上
他们
全名应该表示为"名空格姓"
现在如何办?搜索所有位于引号内
单个逗号?
现实
解决方案是使用隐藏所有细节、只提供
组预定义、猜测试及预优化并能完成所有任务
包
清单3为基于封装代码重新编写
process_employee过程
hr_employee_tp包提供了用于定义保存姓名
局部变量
类型;hr_employee_rp包含有基于
种商务规则而返回全名
将显示PL/SQL语句灌入SQL代码很轻易
同样
谈论封装这些语句是如何重要也不费劲
但另
方面
编写执行封装任务
代码却具有挑战性;甚至是不现实
生成这些包或许更有意义
几年前
我曾帮助构建这样
个生成
该
段为PL/Generator
现在由Quest Software公司拥有
PL/SQL开发社区可以免费使用
你可以从我
网站WebSitewww.StevenFeuerstein.com/puter/gencentral.htm下载
要知道
其封装体系结构和我在前面所概括
约定区别
PL/Generator创建了
个单独
包
它包含了
个表
类型、查询和变化逻辑
全部内容
当你不再编写太多
SQL
而是
执行SQL
时
无论你是生成还是编写自己
定制封装
你
应用
都会受益匪浅
延伸阅读
最新评论