網絡程序設計中的模塊化思維
發表時間:2024-05-31 來源:明輝站整理相關軟件相關文章人氣:
[摘要]首先,以實際例子說明模塊化對于程序編寫的重要性.例子就是我們現在采用的動網論壇 1 論壇的配色是一個論壇保持活力的基礎,一個好的配色意味著一個論壇成功了一半.但我認為動網論壇的配色是及其浪費資源的,同時后臺操作也異常麻煩.首先,它將CSS的各個定義部分存儲到數據庫,在打開頁面時再調用,如 ----...
首先,以實際例子說明模塊化對于程序編寫的重要性.例子就是我們現在采用的動網論壇
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程序的程序員而言,他還有理由拒絕它嗎?