麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > Perl > 正文

養(yǎng)成良好的Perl OOP習(xí)慣

2019-11-18 11:55:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  假如你曾經(jīng)用Perl開發(fā)過(guò)應(yīng)用程序,那你可能用過(guò)很多程序模塊。而且你還可能天天用到這些程序包的面向?qū)ο蠼涌凇5牵偃缒阆衲切┢胀ǖ腜erl程序員一樣,在開發(fā)自己的代碼時(shí)都不試著使用面向?qū)ο蠹夹g(shù)。那么,這篇文章可以幫助你成為一位習(xí)慣面向?qū)ο缶幊痰腜erl開發(fā)者。
  
  OOP速成
  面向?qū)ο缶幊蹋∣OP)的基本思想非常簡(jiǎn)單,說(shuō)不定你可能已在有限場(chǎng)合下用過(guò)這種技術(shù)了。所謂對(duì)象不過(guò)是數(shù)據(jù)的集合,而這些數(shù)據(jù)又千絲萬(wàn)縷地聯(lián)系在一起。不妨考慮下面的例子:假設(shè)某個(gè)哈希散列裝載的是說(shuō)明球類特性的數(shù)據(jù),這樣哈希散列的鍵(key)就可能牽扯到球的顏色、直徑以及制造材料等。而OOP的方法(method)只是處理每個(gè)球類數(shù)據(jù)的哈希散列子程序,這種子程序在操作每個(gè)球有關(guān)數(shù)據(jù)時(shí)會(huì)采用相應(yīng)的定義字段。
  
  什么是哈希散列?
  小型的哈希散列基本上不會(huì)占用什么內(nèi)存,對(duì)系統(tǒng)的性能不會(huì)有大的影響,你完全可以放心地用它們把對(duì)象數(shù)據(jù)歸攏到一起來(lái)。假如你不知道Per語(yǔ)言中的l哈希數(shù)組(也叫作聯(lián)合數(shù)組),那你可沒好好利用Perl。普通的數(shù)組結(jié)構(gòu)按照數(shù)據(jù)的位置命名單個(gè)條目;而在哈希數(shù)組里,你能給條目命名(叫作鍵:key)。其實(shí)不妨把哈希散列想象為一個(gè)小數(shù)據(jù)庫(kù)。給出一個(gè)名字就可以通過(guò)它查出一條記錄。Perl編程時(shí)在命令行上運(yùn)行“perldoc perldata”可以查閱Perl數(shù)據(jù)類型和結(jié)構(gòu)的有關(guān)文檔。
  
  OOP不僅僅只把你的數(shù)據(jù)和子程序組織為互相關(guān)聯(lián)的集合,它還保證了對(duì)象及其方法實(shí)際連接的編譯和運(yùn)行(runtime)時(shí)。那樣,你就不必直接調(diào)用哈希數(shù)組的ball_volume值了。OOP語(yǔ)言還進(jìn)一步的提供了莫大的好處,OOP語(yǔ)言簡(jiǎn)化了編程句法而且為聲明復(fù)雜的、對(duì)象-對(duì)象關(guān)系提供了大量的其它特性。
  
  在最簡(jiǎn)單的情況下,每個(gè)對(duì)象都會(huì)告訴Perl它是什么種類的對(duì)象,這樣,只有知道如何安全地操作該對(duì)象的子程序才會(huì)被調(diào)用。開發(fā)人員則只需使用方法的名字即可。假如你調(diào)用book對(duì)象的volume值,它會(huì)告訴你目前該數(shù)值該圖書數(shù)據(jù)中的位置而不會(huì)告訴你它真正占用了多少體積空間。
  
  習(xí)慣 #1 :使用哈希散列
  請(qǐng)把相關(guān)的數(shù)據(jù)通過(guò)小哈希散列收集起來(lái)。以前你可能創(chuàng)建過(guò)諸如$red、$green以及$blue之類的一整套變量。但不久你就熟悉到你需要2或3個(gè)集合把這些變量修改為$a_red、$b_red、$c_red來(lái)區(qū)別不同對(duì)象的屬性,對(duì)綠色(green)和藍(lán)色(blue)變量也同樣如此。所以請(qǐng)把這9個(gè)變量修改為% a_color、% b_color和%c_color的3個(gè)哈希散列,而把r、g和b選作參數(shù)。
  
  在CPAN內(nèi),幾乎每一個(gè)模塊都封裝成了哈希散列。把成組關(guān)聯(lián)的數(shù)據(jù)包含在哈希散列內(nèi)是一種優(yōu)秀的面向?qū)ο缶幊碳夹g(shù)。這樣做的話你聲明的變量就少多了,數(shù)據(jù)也組織得更為合理。同時(shí)還提高了可靠性,因?yàn)橹T如$boy{height}之類的變量實(shí)際上自身就包含了明顯的含義。清單A即是一例。
  
  習(xí)慣 #2 :使用子程序
  下一個(gè)好習(xí)慣是使用子程序來(lái)圍繞那些數(shù)據(jù)集合組織你的代碼。盡量地把哈希散列上成塊代碼分組到子程序里。保證你傳遞的是集合而非單個(gè)的值。調(diào)用invert_new ( /%color )顯然比調(diào)用invert_old (/$reda , /$greena , /$bluea );更合理。至少你不需要記得參數(shù)的順序。
  
  子程序把代碼組織得更有邏輯了;程序宛如從子程序文件的頭頂略過(guò)而底下的工作全然不知。可以把所有的變量都傳遞給子程序,重用代碼就輕松多了,新的程序使用不同的全局變量,而其中某些全局變量還用于其他完全不同的用途。至少小型的子程序在調(diào)試的時(shí)候也方便多了,在這種情況下,所有你需要了解的代碼剛好占一屏(參看程序清單B)。看,這有多方便!
  
  習(xí)慣 #3 :重用
  第3個(gè)良好的OOP習(xí)慣是把子程序收集起來(lái)放進(jìn)一個(gè)單獨(dú)的文件供以后再次使用他們。你還應(yīng)該精制它們使之能用于一般用途。此外還應(yīng)該在多個(gè)腳本中使用這些子程序而且對(duì)它們不斷地進(jìn)行調(diào)試。現(xiàn)在你不妨把采用某個(gè)特定哈希散列的所有的子程序都組合進(jìn)一個(gè)文件,這就算走出了重用代碼的第1步。
  
  采取以上的做法只需把子程序放進(jìn)某個(gè)文件,再使用的時(shí)候采用“require”要害詞即可。已經(jīng)不用的子程序就別這么做了;那純粹是浪費(fèi)時(shí)間。保證它們能工作就行了。清單C是一個(gè)比較不錯(cuò)的例子。
  
  習(xí)慣 #4 :保護(hù)哈希散列
  保護(hù)你的哈希散列。不要直接創(chuàng)建哈希,最好是對(duì)用來(lái)創(chuàng)建哈希的數(shù)據(jù)進(jìn)行再次檢查之后添加一個(gè)返回哈希散列索引的子程序。然后,再添加一些微小的子程序返回哈希散列中的各個(gè)值以便安全地修改它們。這些代碼示例如清單D所示。
  
  這樣處理小子程序,可以讓你在改變規(guī)則的時(shí)候可以更輕易找出錯(cuò)誤所在。所以,不要在程序中編寫那些修改哈希散列的代碼,你應(yīng)該把這些代碼移到函數(shù)庫(kù)中去。
  
  益處
  以上這些建議歸根結(jié)底就是一句話:哈希散列把數(shù)據(jù)關(guān)聯(lián)了起來(lái),編寫采用整個(gè)哈希散列的子程序,把聯(lián)系某一哈希散列的子程序收集到一個(gè)簡(jiǎn)單的庫(kù)內(nèi),保護(hù)你的哈希散列庫(kù)。這些小技巧幾乎沒有增加什么工作量但卻具有極好的組織性。但這些工作在你創(chuàng)建面向?qū)ο蟮哪K時(shí)占了90%以上的比重。
  
  假如你保證哈希索引首先發(fā)送給了每個(gè)子程序。而且你只通過(guò)庫(kù)函數(shù)同哈希散列內(nèi)部打交道,那么你基本上只需要為你的模塊起個(gè)名字即可。這樣就讓 Perl 知道它應(yīng)該把你的哈希散列當(dāng)作一個(gè)對(duì)象。你的代碼庫(kù)要變成模塊甚至很可能不需要20行代碼。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 欧美日韩大片在线观看 | 色综合久久久久久久久久久 | 欧美精品亚洲人成在线观看 | 午夜视频在线看 | www.com香蕉 | 91短视频在线播放 | 黄色小视频免费在线观看 | 男人久久天堂 | 欧美成人精品欧美一级乱黄 | 日日草视频| 毛片在哪看 | 久久大陆 | 黄色成人短视频 | 丁香天堂网 | 毛片免费观看日本中文 | 二区三区四区视频 | 国产精品毛片无码 | 欧美一级美国一级 | 黄色免费影片 | 成人免费观看49www在线观看 | 狠狠操操 | www国产免费 | 亚洲精品成人av在线 | xxxx69hd一hd| 久久国产精品久久久久久电车 | 久久污| 国产一级毛片视频在线! | 亚洲免费视 | sm高h视频 | 日本欧美一区二区三区在线观看 | 国产精品久久久在线观看 | 青草久久av | 国产成人精品一区二区视频免费 | 日产精品一区二区三区在线观看 | 热re91久久精品国产99热 | 中文字幕在线观看精品 | av在线播放电影 | mmmwww| 最新欧美精品一区二区三区 | h视频免费在线 | 日本aaaa片毛片免费观蜜桃 |