代碼重構(VisualBasic版)

《代碼重構(Visual Basic版)》是清華大學出版社出版的圖書,作者是(美)阿瑟諾維斯基。

基本信息

內容簡介

代碼重構(VisualBasic版)代碼重構(VisualBasic版)
《代碼重構(VisualBasic版)》還介紹了如何進行單元測試、重構模式以及重構升級原有的VisualBasic代碼。在學習《代碼重構(VisualBasic版)》的過程中,將從頭開始構建原型應用程式。然後,利用重構技術將代碼轉換為正確設計的、企業級的應用程式。《代碼重構(VisualBasic版)》作者將手把手地教您每個過程,同時提供了專家級的編碼技巧。然後,可以將這些信息套用到由於公司擴張、策略改變或類似業務決策所引起的實際情形中。

編輯推薦

在這本獨一無二的書中,《代碼重構(VisualBasic版)》作者向您介紹如何利用重構改進現有代碼的設計,使之變得更有效和更具生產力。《代碼重構(VisualBasic版)》提供了實用方法,這樣您將快速學會如何使用重構工具和功能來管理並修改代碼。

《代碼重構(VisualBasic版)》主要內容

組裝重構工具箱的步驟

如何激活explicit和strict編譯器選項

錯誤處理的有效策略

如何消除無用代碼、縮小作用域以及刪除無用的引用

方法合併和提取技巧

高級面向對象概念和相關重構

利用lino和其他VB2008增強功能的技巧

核心重構和基本代碼味道

如何利用免費的Refactor!VisualBasic外掛程式

VisualBasic特定的重構和味道

《代碼重構(VisualBasic版)》讀者對象

《代碼重構(VisualBasic版)》適用於熟悉基本的面向對象概念、Visual:Basic以及VisualStudio環境的中高級編程人員、開發人員或是NET軟體架構師。

目錄

第Ⅰ部分 重構的介紹

第1章 重構的全面介紹

1.1 重構的快速瀏覽

1.1.1 重構過程

1.1.2 軟體行業現狀概述

1.2 重構過程的詳細介紹

1.2.1 代碼味道的使用

1.2.2 代碼的轉換

1.2.3 重構的優點

1.2.4 澄清一些常見的誤解

1.3 VisuallBasic和重構

1.3.1 VisualBasic的發展史和遺留問題

1.3.2 VisualBasic的演變

1.3.3 通過重構處理遺留的問題

1.4 小結

第2章 重構的初體驗

2.1 CaloriesCalculatoi樣本應用程式

2.1.1 CaloriesCalculator應用程式

2.1.2 需求的增長:計算理想的體重

2.1.3 需求的增長:保存病人的數據

2.2 運用中的重構

2.2.1 將:BtnCalculateClick方法分解

2.2.2 發現新的類

2.2.3 限制Patient類的接口

2.2.4 將條件邏輯放到Patient類中

2.2.5 創建Patient類的層次結構

2.3 保存功能的實現

2.3.1 保存數據

2.3.2 實現顯示病人歷史信息的功能

2.4 CalOriesCalculator重構過的版本

2.5 小結

第3章 組建重構的工具箱,

3.1 使用自動化的重構工具

3.1.1JetBrains提供的ReSharper

3.1.2 WholeTomato提供的VisualAssistX

3.1.3 DeveloperExpress提供的Refactor!Pro

3.1.4 從Refactor!開始入手

3.1.5 進一步探討VB用戶界面的Refactor!

3.1.6 快速瀏覽:可供使用的重構

3.2 單元測試的基本內容:測試的護具

3.2.1 單元測試架構的出現

3.2.2Nunit的初體驗

3.2.3 NUnit的安裝

3.2.4 第一個測試的實現

3.2.5 測試驅動的方法

3.2.6 需要考慮的其他測試工具

3.3 關於版本控制的一些問題

3.4 小結

第4章 Rent.a.Wheels應用程式的原型

4.1 會見客戶

4.1.1 會見經理

4.1.2 會見前台接待員

4.1.3 會見停車場的服務人員

4.1.4 會見維護人員

4.2 採取Rent.a.Whneels項目中最初的步驟

4.2.1 參與者和用例

4.2.2 汽車的狀態

4.2.3 首次擬定主要的應用程式視窗

4.2.4.Rent.a.Wheels開發團隊的會議

4.3 讓原型運轉

4.3.1 檢查資料庫模型

4.3.2 檢查VisualBasic的代碼

4.4 快速而高效的VB編程方法

4.4.1 資料庫驅動的設計

4.4.2 基於GUI的應用程式

4.4.3 事件驅動的編程

4.4.4 快速應用程式開發(RAD)

4.4.5 複製,貼上作為代碼重用的機制

4.5 通過重構過程從原型進入到交付

4.6 小結

第Ⅱ部分 VB重構的初步知識

第5章chameleon語言:從靜態弱類型化到動態強類型化

5.1 OptionEXplicit和OptionStrict的.NET影響

5.2 在不嚴格的代碼中設定ODtiOnExplicitOn

5.2.1 理解SetOptionExplicitOn重構

5.2.2 將Rent.a.Wheels代碼重構成顯式的形式

5.3 在不嚴格的代碼中設定ODtionStrict0n

5.3.1 一個有點人為的隨意的VB代碼示例

5.3.2 通過新變數的定義來解決變數的複雜用法

5.3.3 推斷變數的類型

5.3.4 通過類型轉換函式將所有內容整合在一起

5.3.5 方法、欄位、屬性和其他成員的處理

5.3.6 將SetOptionStrictOn重構運用到Rent.a.Wheels應用程式中

5.4靜態類型化對動態類型化及其與ⅥsualBasic的關係

5.4.1 VisualBasic6及其之前版本中的後期綁定

5.4.2鴨子類型

5.4.3 在檔案層次上重設動態行為或靜態行為

5.4.4 為動態代碼提供一個靜態類型化的封裝器

5.5 激活顯式而嚴格的編譯器選項

5.5.1 在Proiect.Properties視窗中設定選項

5.5.2 更改VisualBasic編譯器的默認行為

5.5.3 在源檔案中設定選項

5.5.4 使用項模板來設定選項

5.6 小結

第6章 錯誤處理:以一些簡單的步驟從傳統風格步入到結構化風格

6.1 傳統的錯誤處理和結構化的錯誤處理

6.1.1 傳統的(非結構化的)錯誤處理

6.1.2 結構化的錯誤處理

6.2 結構化錯誤處理的好處

6.2.1 結構化的代碼和非結構化的代碼

6.2.2 作為類型而不是數字出現的異常

6.2.3 錯誤過濾

6.2.4 Finally代碼塊

6.2.5.NET的互操作性

6.3 用Try.Carch.Finally取代OnE1TOt.構造

6.3.1 理解關鍵字When

6.3.2 用Try.Catch.Finally替換OnError的重構步驟

6.3.3 用Try.Catch.Finally構造替換OnErrorGoto標籤

6.3.4 用Try.Catch.Finally構造替換OnErrorResumeNext

6.4 用異常類型替換錯誤代碼

6.4.1 用異常類型替換系統錯誤代碼

6.4.2 用異常類型來替換自定義的錯誤代碼

6.5 Rent—a—Wheels應用程式中的錯誤處理

6.6 小結

第7章 基本的代碼衛生:消除無用代碼、降低作用域、使用顯式導入以及刪除不用的引用

7.1 刪除無用代碼

7.1.1 無用代碼的類型

7.1.2 無用代碼常見的來源

7.2 降低過度曝光的元素的作用域和訪問級別

7.2.1 作用域和訪問級別

7.2.2 過度曝光常見的來源

7.2.3 處理過度曝光的問題

7.3 使用顯式導入

7.4 刪除未使用的程式集引用

7.5 Rent.a.Wheels應用程式中的基本衛生

7.6 小結

第Ⅲ部分 標準重構轉換的初步介紹

第8章 從問題域到代碼:消除差距

8.1 理解問題域

8.1.1 第1步:收集信息

8.1.2 第2步:就辭彙表達成一致意見

8.1.3 第3步:描述互動作用

8.1.4 第4步:建立原型

8.2 命名的指導原則

8.2.1 大寫風格

8.2.2 簡單的命名指導原則

8.2.3 順暢地傳遞信息:選擇正確的單詞

8.2.4rename重構

8.3 發布接口和公有接口

8.3.1 自包含的應用程式與可重用的模組

8.3.2 修改公有接口

8.3.3 Refactor!中的SafeRenam重構

8.4 Rent.a.W1aeels應用程式中的Rename和SafeRename重構

8.5 小結

第9章 對重複代碼進行方法提取

9.1 保持封裝代碼和隱藏細節的原因

9.2 信息和實現的隱藏

9.3 分解方法

9.3.1 周長計算——長方法的一個示例

9.3.2 提取周長計算的代碼

9.3.3 提取計算半徑的代碼

9.3.4 提取WaitforUsertoClose代碼

9.3.5 提取讀取坐標的代碼

9.3.6 Refactorl中的ExtractMemod重構

9.4 重複代碼的味道

9.4.1 重複代碼的來源

9.4.2 複製/貼上編程

9.5幻數

9.6 Rent.a.wheels應用程式中的ExtractMethod和ReplaceMagicLiteral重構

9.7 小結

第10章 方法合併與方法提取的技術

10.1 臨時變數的處理:

10.1.1 MoveDeclarationNearReference重構

10.1.2 MoveInitializationtoDeclaration重構

10.1.3 SplitTemporaryVariable重構

10.1.4 InlineFemp重構

10.1.5 ReplaceFempwithQuery重構

10.2 方法重組的試探

10.3 方法重組與Rent—a.Wlleels

10.3.1 刪除Rent.a.wheels中的重複

10.3.2 Rent.a.Wheels中的幻數、注釋以及事件處理盲區

10.4 小結

第Ⅳ部分 高級重構

第Ⅴ部分 重構的運用

……

序言

前幾天,我觀看了一部關於南美電影導演FabianBielinsky的紀錄片,我特別注意到他在一次訪談中與觀眾共同分享的一些想法。他說在拍攝場景時,通常發生的情況是攝製的場景可能並不是導演原來想像希望能得到的。有時候,需要重新拍攝場景直到導演獲得最初想要的場景為止,而在其他一些情況下,有些場景可能是唾手可得的,甚至認為這可能比最初的構思要更好。因此,他總結道,製作電影的真正藝術在於明智地決定什麼時候需要重做,什麼時候只要使用第一次獲得的場景即可。

令人意外的是,雖然這是電影製作的情形,但編寫組件的代碼與攝製場景也是非常相似的。總是可能獲得比給定算法更好的方法。因此,出於時間安排、預算、交付責任日期以及通常的用戶滿意度的考慮,有著管理人員頭銜的人必須決定在什麼時候凍結所有可能的改進以及什麼時候繼續並獲得更多的改進。

因此,這裡將說明重構的需求問題。首先定義重構在軟體行業術語中的含義(非正式的,作者將更好地定義):重構是一系列用於改善代碼片斷質量(可理解性、可維護性、模組性、可擴充性等)的技術和機理,方法是以保持通常行為固定不變的方式來重新組織語句。換言之,受影響組件的行為不應該隨著過程的後果而是隨著它們的質量而變化,並希望增加其壽命。

精彩書摘

第Ⅰ部分 重構的介紹

第1章 重構的全面介紹

如果查看任何主要的集成開發環境(IDE),那么就可能在某些地方發現“重構”選項。如果繼續跟隨編程群體的開發行為,那么肯定會發現很多與該主題相關的文章和書籍。對於某些人來說,自設計模式開始,重構就是編程過程中最重要的新生技術。

與其他時尚的東西不同,因為重構可以幫助編程人員和編碼員更好地工作且更有成效,所以他們都很樂於接受並熱心傳播這項技術。毫無疑問,不管使用的是什麼工具、程式語言或正在開發的程式類型,重構的套用已經成為編程人員日常工作中非常重要的部分。Visual Basic就是其中之一:此時,在通常的編程群體中流行的重構浪潮也一樣發生在VisualBasic群體內部。

在本章中,將:

首先介紹什麼是重構以及它之所以重要的原因,然後討論了重構帶來的一些好處。

此外還澄清了一些關於重構最為常見的錯誤看法。

在本章第二部分中,簡單介紹了Visual Basic作為程式語言的詳細情況,以及對於 Visual Basic編程人員而言,由於一些與Visual Basic相關的歷史問題,重構是如何更加密切相關的。

下面首先介紹一些與重構相關的背景。

1.1 重構的快速瀏覽

在處理某些編程任務的時候,可以使用很多方法來完成。首先,了解這樣的概念,但是隨著進一步了解細節信息,都會不可避免地碰到這些問題:“是否應該把這種方法放到類中或可能的其他類中?是否需要一個類作為一種類型來代表這種數據或是否很好地使用了原始的概念?是否要把這個類分成多個部分?兩個類之間是否存在繼承關係或是否應該只是使用組合(composition)?”如果與其他同事分享這些想法,那么可能會聽到更多關於設計系統的方法。然而,一旦決定使用某種方法,那么後面如果要修改最初的決定將付出昂貴的代價。重構將教讀者如何高效率地修改代碼,這樣將把因為這些修改而產生的影響保持在最低水平。此外,重構還將幫助把設計看作是在項目任何階段都可以處理的問題,而不是從一開始就一成不變的。事實上,可以通過靈活的方式處理設計的問題。

相關詞條

相關搜尋

熱門詞條

聯絡我們