?? pl003.asp
字號:
<UL>
<ADDRESS>資 料 性 參 數(shù) 及 傳 回 值</ADDRESS>
<ADDRESS>控 制 性 參 數(shù) 及 傳 回 值</ADDRESS>
</UL>
</TD>
<TD>
<ADDRESS>傳 遞 性 關(guān) 連</ADDRESS>
<UL>
<ADDRESS>- 資 料 關(guān) 連</ADDRESS>
<ADDRESS>- 控 制 關(guān) 連</ADDRESS>
</UL>
</TD>
</TR>
<TR>
<TD>
<ADDRESS>(2) 共 用 (全 域 )變 數(shù)</ADDRESS>
</TD>
<TD>
<ADDRESS>共 用 關(guān) 連</ADDRESS>
</TD>
</TR>
<TR>
<TD>
<ADDRESS>(3) 程 式 碼</ADDRESS>
</TD>
<TD>
<ADDRESS>內(nèi) 容 關(guān) 連</ADDRESS>
</TD>
</TR>
</TABLE>
</UL>
<UL>
<P>以 下 是 針 對 上 述 的 幾 種 關(guān) 連 性 所 提 出 的 進 一 步 解 說 :
</P>
</UL>
<H3><B>資 料 關(guān) 連 (Data Coupling)</B></H3>
<UL>
<P>兩 個 副 程 式 之 間 的 關(guān) 系 是 建 立 在 傳 遞 物 (參 數(shù) 及 傳 回 值
)上 面 , 而 每 一 個 傳 遞 物 均 為 「 資 料 性 質(zhì) 」 者 , 稱 為 「 資
料 關(guān) 連 」 。 </P>
<P>我 們 先 前 提 過 傳 遞 物 依 性 質(zhì) 可 分 成 「 資 料 性 質(zhì) 」 及 「
控 制 性 質(zhì) 」 兩 種 , 如 何 區(qū) 分 呢 ? 如 果 說 傳 遞 物 會 用 在 副
程 式 的 「 邏 輯 判 斷 式 」 者 , 它 就 屬 於 控 制 性 質(zhì) , 例 如 :
「 If IsRunning Then ...」 中 的 IsRunning, 其 目 的 是 用 來 「 控 制
」 程 式 的 執(zhí) 行 路 徑 , 除 此 之 外 , 其 它 的 資 料 大 致 上 都 屬
於 資 料 性 質(zhì) , 例 如 拿 來 作 為 數(shù) 值 運 算 的 資 料 、 字 串 操 作
的 資 料 等 。 </P>
<P>就 資 料 關(guān) 連 來 說 , 讓 我 們 舉 個 例 子 來 看 看 , 以 下 是 呼
叫 Len() 函 數(shù) 的 式 子 : </P>
<UL>
<P><FONT COLOR="#000080">length = Len( "Run!程 式 設(shè) 計 " )</FONT></P>
</UL>
<P>呼 叫 端 呼 叫 函 數(shù) Len() 時 會 傳 入 一 個 「 字 串 」 參 數(shù) , 而
Len() 返 回 時 會 傳 回 「 字 串 長 度 」 , 字 串 與 字 串 長 度 在 這
里 都 是 「 資 料 性 質(zhì) 」 的 , 因 此 它 們 的 關(guān) 連 性 屬 於 「 資 料
關(guān) 連 」 。 </P>
<P>資 料 關(guān) 連 是 副 程 式 之 間 的 關(guān) 連 中 最 弱 、 最 容 易 維 護 的
一 種 , 因 為 既 然 要 整 合 程 式 , 副 程 式 之 間 的 資 料 傳 遞 就
在 所 難 免 , 寫 出 這 樣 的 副 程 式 距 離 好 的 副 程 式 已 經(jīng) 八 九
不 離 十 了 。 </P>
<P>為 了 方 便 後 面 的 解 說 , 我 們 要 把 副 程 式 之 間 的 關(guān) 系 用
圖 形 來 表 達 , 就 拿 呼 叫 Len() 的 例 子 開 始 吧 ! </P>
<UL>
<P><IMG SRC="pl03-1.gif" HEIGHT=172 WIDTH=230></P>
<P><FONT COLOR="#008000">(圖-1) 呼 叫 Len() 的 資 料 關(guān) 連 </FONT></P>
</UL>
<P>請 注 意 兩 件 事 情 , 圖 中 我 們 所 謂 的 副 程 式 指 是 廣 義 的
副 程 式 , 它 除 了 表 示 一 般 的 副 程 式 之 外 , 也 用 來 表 示 函
數(shù) 及 主 程 式 , 另 外 我 們 還 特 別 把 「 呼 叫 」 與 「 資 料 流 」
分 開 , 呼 叫 以 ─ → 表 示 , 它 永 遠 是 從 呼 叫 端 指 到 被 呼 叫
端 , 至 於 資 料 流 , 則 可 能 包 含 呼 叫 時 的 「 參 數(shù) 傳 遞 」 及
返 回 時 的 「 傳 回 值 」 , 其 方 向 未 必 與 「 呼 叫 」 的 方 向 相
同 , 所 以 采 用 有 別 於 呼 叫 的 <IMG SRC="pl03-b.gif" HEIGHT=9 WIDTH=44>來
表 示 「 資 料 流 」 。 </P>
<P>資 料 關(guān) 連 是 最 弱 的 關(guān) 連 , 屬 關(guān) 連 性 中 最 佳 的 一 種 , 不
過 就 程 式 好 壞 的 評 估 上 , 仍 要 再 檢 視 整 體 程 式 的 架 構(gòu) ,
舉 個 例 子 來 看 : </P>
<UL>
<P><IMG SRC="pl03-2.gif" HEIGHT=229 WIDTH=257></P>
<P><FONT COLOR="#008000">(圖-2) P_Tramp 是 「 游 走 型 資 料 」 </FONT></P>
</UL>
<P>乍 看 之 下 , 上 面 這 個 架 構(gòu) 中 , 所 有 副 程 式 之 間 的 關(guān) 連
性 都 只 有 資 料 關(guān) 連 , 但 請 注 意 參 數(shù) P_Tramp, 它 一 共 游 走 了
兩 層 的 副 程 式 , 我 們 稱 它 為 「 游 走 型 資 料 」 , 游 走 型 資
料 有 什 麼 缺 點 呢 ? 假 如 說 P_Tramp 只 會 在 副 程 式 Sub12 中 被
使 用 , 那 麼 當(dāng) 它 經(jīng) 過 Sub1 時 , 極 可 能 因 為 程 式 設(shè) 計 人 員
的 不 小 心 而 被 改 變 掉 , 增 加 了 危 險 性 。 一 般 來 說 , 參 數(shù)
經(jīng) 過 的 副 程 式 越 多 , 被 不 當(dāng) 地 改 變 掉 的 危 險 性 就 越 高 ,
因 此 我 們 應(yīng) 該 盡 可 能 把 這 類 到 處 游 走 的 資 料 去 掉 才 是 ,
以 前 面 的 例 子 來 看 , 應(yīng) 該 改 成 : </P>
<UL>
<P><IMG SRC="pl03-3.gif" HEIGHT=229 WIDTH=226></P>
<P><FONT COLOR="#008000">(圖-3) 圖 -2經(jīng) 修 正 後 的 架 構(gòu) </FONT></P>
</UL>
</UL>
</TD>
</TR>
</TABLE>
<TABLE CELLSPACING=0 CELLPADDING=0 WIDTH="95%" >
<TR>
<TD>
<H3><B>控 制 關(guān) 連 (Control Coupling)</B></H3>
<UL>
<P>兩 個 副 程 式 之 間 的 關(guān) 系 是 建 立 在 傳 遞 物 (參 數(shù) 或 傳 回 值
)上 面 , 而 這 些 傳 遞 物 之 中 含 有 一 個 以 上 的 「 控 制 性 質(zhì) 」
傳 遞 物 , 稱 為 「 控 制 關(guān) 連 」 。 舉 個 例 子 來 說 , 呼 叫 端 傳
入 一 個 「 如 何 顯 示 視 窗 」 的 參 數(shù) (如 以 下 例 子 的 how_to_show),
指 示 副 程 式 ShowWindow() 顯 示 視 窗 的 方 法 , 程 式 上 可 能 是 :
</P>
<UL>
<ADDRESS><FONT COLOR="#000080">Call ShowWindow( windowID, how_to_show )</FONT></ADDRESS>
<ADDRESS><FONT COLOR="#000080">呼 叫 端</FONT></ADDRESS>
<ADDRESS><FONT COLOR="#000080">- - - - - - - - - - - - - - - - - - - -
- - - - - - - - </FONT></ADDRESS>
<ADDRESS><FONT COLOR="#000080">副 程 式 </FONT></ADDRESS>
<ADDRESS><FONT COLOR="#000080">Sub ShowWindow( windowID, how_to_show )</FONT></ADDRESS>
<UL>
<ADDRESS><FONT COLOR="#000080">Select Case how_to_show</FONT></ADDRESS>
<UL>
<ADDRESS><FONT COLOR="#000080">Case 1</FONT></ADDRESS>
<UL>
<ADDRESS><FONT COLOR="#000080">... ' 以 一 般 大 小 的 視 窗 顯 示 </FONT></ADDRESS>
</UL>
<ADDRESS><FONT COLOR="#000080">Case 2</FONT></ADDRESS>
<UL>
<ADDRESS><FONT COLOR="#000080">... ' 以 最 大 化 的 視 窗 顯 示 </FONT></ADDRESS>
</UL>
<ADDRESS><FONT COLOR="#000080">Case 3</FONT></ADDRESS>
<UL>
<ADDRESS><FONT COLOR="#000080">... ' 以 最 小 化 的 視 窗 顯 示 </FONT></ADDRESS>
</UL>
</UL>
<ADDRESS><FONT COLOR="#000080">End Select</FONT></ADDRESS>
</UL>
<ADDRESS><FONT COLOR="#000080">End Sub</FONT></ADDRESS>
</UL>
<P>在 這 個 例 子 中 , 您 將 發(fā) 現(xiàn) how_to_show 這 個 參 數(shù) 與 顯 示 視
窗 的 邏 輯 運 算 并 沒 有 什 麼 關(guān) 系 , 它 的 目 的 是 用 來 控 制 ShowWindow()
該 執(zhí) 行 內(nèi) 部 的 哪 一 段 程 式 碼 。 由 於 how_to_show 這 個 參 數(shù) 并
非 邏 輯 運 算 用 的 「 資 料 」 , 而 是 「 控 制 」 副 程 式 內(nèi) 部 邏
輯 的 旗 標 , 所 以 它 是 「 控 制 性 質(zhì) 」 的 資 料 , 為 了 與 純 資
料 性 質(zhì) 的 資 料 有 所 區(qū) 分 , 我 們 在 結(jié) 構(gòu) 圖 上 以 <IMG SRC="pl03-c.gif" HEIGHT=10 WIDTH=41>來
表 示 它 , 而 前 面 ShowWindow() 的 例 子 可 以 表 示 成 : </P>
<UL>
<P><IMG SRC="pl03-4.gif" HEIGHT=196 WIDTH=255></P>
<P><FONT COLOR="#008000">(圖-4) 控 制 關(guān) 連 </FONT></P>
</UL>
<P>一 般 來 說 , 控 制 關(guān) 連 雖 然 不 比 資 料 關(guān) 連 來 的 容 易 維 護
, 但 只 要 對 控 制 用 的 旗 標 性 參 數(shù) 做 好 應(yīng) 有 的 文 件 , 控 制
連 結(jié) 的 副 程 式 仍 然 具 有 高 度 的 可 維 護 性 。 但 撰 寫 這 類 的
副 程 式 時 要 特 別 注 意 , 控 制 性 的 旗 標 參 數(shù) 只 適 合 用 在 上
層 傳 給 下 層 的 副 程 式 (例 如 上 面 的 例 子 )。 以 下 舉 一 個 例
子 來 說 明 以 「 下 層 控 制 上 層 」 副 程 式 的 缺 點 : </P>
<UL>
<P><IMG SRC="pl03-5.gif" HEIGHT=197 WIDTH=201></P>
<P><FONT COLOR="#008000">(圖-5) 下層副程式以「列印無此帳號」旗標控制上層的行為
</FONT></P>
</UL>
<P>這 個 例 子 中 , 下 層 的 副 程 式 傳 回 一 個 「 列 印 無 此 帳 號
」 的 旗 標 , 要 求 上 層 的 副 程 式 處 理 列 印 的 動 作 , 這 好 像
是 當(dāng) 員 工 的 告 訴 老 板 說 : 「 老 板 , 你 把 這 件 事 做 好 」 ,
這 顯 然 與 副 程 式 該 扮 演 的 角 色 相 違 背 。 </P>
<P>改 良 下 層 控 制 上 層 的 方 法 還 算 簡 單 , 假 如 列
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -