2010-01-16 63 views
7

我在學校的Web腳本課,正在做我的第一個任務。我傾向於做得過分,深入研究我的課程,而不是我的課程所要求的。現在我研究CGI.pm做我的HTTP請求和它說是CGI.pm兩種編程風格:使用Perl的兩種不同編程風格的CGI.pm有什麼優缺點?

  • 面向對象的風格
  • 面向函數的風格

除非我忽略了明確的答案,或者沒有足夠的知識以從我提供的文檔中找到答案,我只是不知道使用這兩種不同的風格有什麼優點和缺點。

有了這樣說有什麼用兩種不同風格的利弊?哪一個更常用?至於使用面向對象的風格,它說我當時只能使用一個CGI對象。這是爲什麼?

感謝您的幫助。你們都讓學習計算機科學對我來說非常愉快,令人滿意,並且很有收穫。 = d

回答

17

在幕後,CGI.pm是,儘管風格做同樣的事情。功能接口實際上使用了一個你看不到的祕密對象。

對於許多小規模的CGI項目,你可能永遠不會需要超過一個CGI對象的時間,所以在功能界面是好的。這可能是更常見的風格,但僅僅是因爲大多數人爲非常特定的任務製作小腳本。如果你有很多其他的東西在繼續,你可能不喜歡CGI.pm將長列表(並且很長)的函數名導入你的腳本中。某些函數名稱可能會與其他要導入的模塊衝突。

但是,我總是使用面向對象的接口。我不必擔心名稱衝突,並且很明顯自從您看到它的對象以來任何方法都來自哪裏。這也很容易傳遞對象作爲參數傳遞給大型應用程序的其他部分,等

有些人可能會抱怨額外的輸入,但從來沒有編程我的慢的部分。我一直在做Perl很長一段時間,我不介意語法。但是,我只使用CGI來獲取輸入並可能發送輸出。我不會惹上任何HTML的東西。

當它一次談到一個CGI.pm對象,它指的是訪問輸入。例如,一旦你閱讀了STDIN,另一個CGI.pm對象將無法讀取它。儘管如此,您可以擁有儘可能多的對象。他們不會共享數據,第一個獲取所有POST數據。

儘管你可以使用混合物。你可以導入一些東西,如:html,但仍然使用OO接口來處理輸入。

4

我強烈建議使用對象接口。

你的作業絕對需要嗎?不,事實上,即使是小型生產項目,這也可能是過火。

但是,如果你是認真的學習使用CGI.pm較大規模的項目,你需要學習的對象方法。如果你達到需要兩個對象的點,你將不得不使用對象接口。與大多數其他事物一樣,編程在練習中變得更好。現在練習相對容易的問題將幫助您爲更復雜的問題做好準備。

事實上,我推薦它作爲編程中的一般規則(雖然有例外),如果面臨兩種使用特定工具的習慣使用最有可能用於生產代碼的習慣, /或對於更多問題空間而言是正確答案的那個。

相關問題