網路程式設計中的模組化思維

來源:互聯網
上載者:User
程式|設計|網路 首先,以實際例子說明模組化對於程式編寫的重要性.例子就是我們現在採用的動網論壇

1 論壇的配色是一個論壇保持活力的基礎,一個好的配色意味著一個論壇成功了一半.但我認為動網論壇的配色是及其浪費資源的,同時後台操作也異常麻煩.首先,它將CSS的各個定義部分儲存到資料庫,在開啟頁面時再調用,如
--------------------------
<%
'開啟資料庫代碼省略
dim bgcolor1
bgcolor1=rs("bgcolor1")
rs.close
set rs=nothing
%>
<table><tr><td bgcolor='<%=bgcolor1%>'></td></tr></table>
--------------------------
採用這種方法,在查詢資料庫內容較少時還說的過去,但一個頁面的CSS定義多達幾十項而且每頁都要調用時,這段代碼就顯得尤其白癡了.試試以下這種方法:
--------------------------
<%
'1.CSS檔案為頁面STYLE檔案,我們將其檔案路徑儲存到資料庫中
Dim style1=Rs("style")
%>
<html><head>
<link rel="stylesheet" type="text/css" href="<%=style1%>">
</head>
---------------------------
這種方法要比上面動網的方法快的多,而且大大減少了資源,這就是模組化的好處之一
可能有些朋友還不明白什麼是模組化,我還是老習慣,用個執行個體向大家說明.該執行個體是寫一個簡單的留言本,當然事實上,留言本這麼小的一個程式一般是不需要模組化的,我只是說明一下.

我們要求這個留言本必須註冊了才能留言,只有管理員能夠回複.按照一般的寫法,我們會寫一個單獨的登陸頁面,然後當使用者沒註冊進入留言頁面時自動跳轉到登陸頁面,或用iframe包含該頁面.當然,我們還要寫一個註冊頁面,一個回複頁面

當使用模組化後,我們僅僅只需要2個檔案就能搞定它,一個顯示頁面/gb.asp,一個模組頁面/mod.asp
思路是這樣的:
1 將 顯示留言 登陸 註冊 寫留言 等等功能分別模組話,如登陸功能
-----------
<%
'MOD.ASP中登陸模組
Sub gb_login()
%>
<form action='gb.asp?action=login' method=post>
<input type=text name='loginname' size=12>
<input type=password name='loginpass' size=12>
<input type=submit value='登陸'>
</form>
<%
End Sub
'處理登陸的模組
Sub gb_logincheck()
Dim a1,a2
a1=Request.form("loginname")
a2=request.form("loginpass")
'開啟資料庫語句省略
if a2=rs("pass") then
session("name")=a1
end if
Response.Redirect "gb.asp"
End Sub
%>

然後我們可以在留言首頁面這樣調用
<%
Dim action
action=Request("action")
if action="login" then
gb_logincheck()
else
if session("name")="" then
gb_login()
end if
end if
%>
----------------------
當然上面的執行個體還很不完全,我們按照這個思路可以將所有功能定義成一個子過程統一放在一個檔案裡,需要用時在調用

通過上面的執行個體,我們應該瞭解了什麼是模組化
模組是指程式中的一段代碼,該段代碼能實現程式中的某一功能並能獨立或半獨立運行.該語句段的非致命錯誤並不能導致整個程式癱瘓,只是使程式喪失部分功能.
模組能夠重複調用,根據程式的特殊性,模組中能夠包含其他模組,結合其他模組運行

在大型程式編寫中,模組話的運用是不可避免的.還是以動網為例,大家可以看看動網的源碼,它也大量運用了子過程,對於整個程式運行有很大作用.但是存在著很多錯誤和缺陷.
比如
1 動網論壇中從頭到尾資料庫的串連都是開啟的,而且很多地方多次開啟資料庫,卻找不到關閉資料庫連接的代碼,這就是很多用東網的朋友說論壇慢的原因所在
分析它的源碼,我們可以發現他將開啟資料庫的代碼放在一個檔案裡,然後將關閉資料庫的代碼放在一個函數裡.我覺得很奇怪,為什麼不把開啟資料庫也作為一個子過程或函數調用呢?
一個很好的方法用了一半就不用了實在可惜!!瀏覽很多WEB程式的源碼,也大多存在這種龍頭蛇尾的現象.

2 很多模組存在著無數的錯誤.最明顯的就是線上人數,呵呵,象我們論壇經常出現線上遊客幾百人的情況.而事實上大家都知道來我們論壇的人絕對不會不登陸的!這個錯誤我不想講太多,因為如果我寫,我絕對會換個方法寫.

模組化的優秀典範有很多,在論壇程式上將模組化運用的異常成功的當推PHPBB,大家可以去他的官方網站看看[http://www.phpbb.com ]

當然,我們沒有必要將一個程式的所有代碼都模組化,這樣反而適得其反.什麼程式碼片段應該模組化呢,我認為應該具備以下條件
1 大量在多個頁面或程式中重複使用的程式碼片段
2 有待進一步開發的程式碼片段
3 程式中的關鍵功能,核心內容
4 能擴充第三方外掛程式的程式碼片段

OK,講到這應該告一段落了,最後總結以下模組化的定義和特點

在程式設計特別是WEB程式設計中,我們採用模組化有以下好處:
1 大大減少程式碼
2 使程式的結構清晰,在尋找錯誤時目標範圍大大減小
3 當程式需要添加新的功能或修改某功能時,我們要作的僅僅是寫出一個新的模組或對某一模組進行修改,而無需對整個程式進行大手術.因為這個原因,模組化也創造了良好的介面環境,便於開發第三方擴充功能

當然,模組化也存在著缺陷:
1 在設計模組時必須考慮模組間是否有衝突,有時候會發生很多意想不到的錯誤
2 模組中必須保持清楚的結構,有些模組間的互動性導致在編寫程式中原本無序的代碼必須排序

但,模組化的優點是顯而易見的,對於一個想用最少代碼寫出最強大功能的WEB程式的程式員而言,他還有理由拒絕它嗎?



相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。