电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Oracle數據庫編寫PL/SQL代碼經驗談

瀏覽:9日期:2023-11-24 19:06:52
我從1990年就開始編寫PL/SQL代碼。這意味著我已經編寫了幾萬行的軟件代碼,但我確信,其中的絕大多數代碼都非常拙劣,而且難以維護。 幸運地是,我發現找到并遵循編寫出更好代碼的新方法還為時不晚。就是在去年,我的代碼質量有了顯著改進;這些改進主要是由于制定了一些簡單的規則,并像紀律一樣加以遵守。 所有工作都獨自完成 我們很少有人是孤立工作的;大多數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開發社區可以免費使用。你可以從我的網站www.StevenFeuerstein.com/puter/gencentral.htm下載。要知道,其封裝體系結構與我在前面所概括的約定不同。PL/Generator創建了一個單獨的包,它包含了一個表的類型、查詢和變化邏輯的全部內容。 當你不再編寫太多的SQL,而是調用執行SQL的程序時,無論你是生成還是編寫自己的定制封裝,你的應用程序都會受益匪淺。
標簽: Oracle 數據庫
主站蜘蛛池模板: 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | TPM咨询,精益生产管理,5S,6S现场管理培训_华谋咨询公司 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 新疆系统集成_新疆系统集成公司_系统集成项目-新疆利成科技 | 国产离子色谱仪,红外分光测油仪,自动烟尘烟气测试仪-青岛埃仑通用科技有限公司 | 液压升降平台_剪叉式液压/导轨式升降机_传菜机定做「宁波日腾升降机厂家」 | 劳动法网-专业的劳动法和劳动争议仲裁服务网 | 电销卡_北京电销卡_包月电话卡-豪付网络 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 常州减速机_减速机厂家_常州市减速机厂有限公司 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 展厅装修公司|企业展厅设计|展厅制作|展厅搭建—广州展厅装饰公司 | 海南在线 海南一家| 订做不锈钢_不锈钢定做加工厂_不锈钢非标定制-重庆侨峰金属加工厂 | 螺杆泵_中成泵业| 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 垃圾处理设备_餐厨垃圾处理设备_厨余垃圾处理设备_果蔬垃圾处理设备-深圳市三盛环保科技有限公司 | 移动机器人产业联盟官网| 阻垢剂-反渗透缓蚀阻垢剂厂家-山东鲁东环保科技有限公司 | 首页_中夏易经起名网| 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 水厂污泥地磅|污泥处理地磅厂家|地磅无人值守称重系统升级改造|地磅自动称重系统维修-河南成辉电子科技有限公司 | 反渗透水处理设备|工业零排放|水厂设备|软化水设备|海南净水设备--海南水处理设备厂家 | 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 | 元拓建材集团官方网站| 无硅导热垫片-碳纤维导热垫片-导热相变材料厂家-东莞市盛元新材料科技有限公司 | 火锅底料批发-串串香技术培训[川禾川调官网] | Copeland/谷轮压缩机,谷轮半封闭压缩机,谷轮涡旋压缩机,型号规格,技术参数,尺寸图片,价格经销商 CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 天津仓库出租网-天津电商仓库-天津云仓一件代发-【博程云仓】 | 昊宇水工|河北昊宇水工机械工程有限公司 | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 威廉希尔WilliamHill·足球(中国)体育官方网站 | 高柔性拖链电缆-聚氨酯卷筒电缆-柔性屏蔽电缆厂家-玖泰电缆 | 定制异形重型钢格栅板/钢格板_定做踏步板/排水沟盖板_钢格栅板批发厂家-河北圣墨金属制品有限公司 | 皮带输送机-大倾角皮带输送机-皮带输送机厂家-河南坤威机械 | 混合生育酚_醋酸生育酚粉_琥珀酸生育酚-山东新元素生物科技 | 健康管理师报考条件,考试时间,报名入口—首页 | 结晶点测定仪-润滑脂滴点测定仪-大连煜烁 | 东莞韩创-专业绝缘骨架|马达塑胶零件|塑胶电机配件|塑封电机骨架厂家 | 不锈钢钢格栅板_热浸锌钢格板_镀锌钢格栅板_钢格栅盖板-格美瑞 |