国产亚洲免费播放片_日韩欧美中文字幕在线韩免费_亚州在线观看视频在线观看_中文字幕AV熟女_中文高清欧美日本_视频一区二区三卡在线观看免费_日本精品人妻久久久_亚洲日韩另类制服无码AV_777米奇影视狠狠狠_国产成人免费无码精品

?

您好!歡迎來到上海艾縱企業(yè)管理咨詢有限公司!

加入收藏

登錄注冊(cè)

400-676-1955

重構(gòu)-復(fù)雜遺留系統(tǒng)重構(gòu)與維護(hù) 敏捷專業(yè)開發(fā)者必備的基本技能

我要報(bào)名

編輯日期 2018-06-14  閱讀次數(shù):1435 次


【課程背景】

軟件重構(gòu)面臨的背景都是相似的,程序員們?yōu)榱丝焖偻瓿尚枨蠛蜕暇€而寫出了最基本的代碼,而在功能的不斷擴(kuò)充過程中,以打補(bǔ)丁的方式對(duì)代碼進(jìn)行擴(kuò)充,中間還會(huì)面臨著開發(fā)人員的變更和離職。逐漸的,代碼就會(huì)越來越臃腫,漸漸的變得難以維護(hù)。

很多開發(fā)人員對(duì)重構(gòu)有著嚴(yán)重的誤解,錯(cuò)誤的認(rèn)為重構(gòu)是專門安排一個(gè)階段來進(jìn)行的,但是我們卻認(rèn)為重構(gòu)是持續(xù)進(jìn)行的,而不是在項(xiàng)目結(jié)束時(shí)、發(fā)布版本時(shí)、迭代結(jié)束時(shí)甚至不是每天快下班時(shí)才進(jìn)行的.重構(gòu)是我們每隔一個(gè)小時(shí)或者半個(gè)小時(shí)就要去做的事情。通過重構(gòu),我們可以持續(xù)地保持代碼盡可能干凈,簡(jiǎn)單并且具有表達(dá)力。因此重構(gòu)成為了每個(gè)開發(fā)人員必備的基本技能,可是國(guó)內(nèi)的開發(fā)人員卻很少去重構(gòu)。

那么糟糕的軟件代碼結(jié)構(gòu)會(huì)有什么樣的影響?首先是開發(fā)效率的降低,在糟糕架構(gòu)下加進(jìn)新功能,會(huì)受之前代碼的影響,可能存在意想不到的改動(dòng)點(diǎn)和問題點(diǎn),開發(fā)和調(diào)試時(shí)間都會(huì)大大增加;其次是故障率的提升,在質(zhì)量低下的代碼中,總是容易藏著很多不易發(fā)現(xiàn)的坑,這些都會(huì)成為故障的隱患;同時(shí),架構(gòu)也會(huì)使得需求的完成大打折扣,使得設(shè)計(jì)好的目標(biāo),因?yàn)榧軜?gòu)限制或者性能等原因,只能完成80%甚至更低。

 

大多數(shù)軟件開發(fā)方面的培訓(xùn)都是關(guān)于新系統(tǒng)的設(shè)計(jì)和開發(fā),講師教你如何從無到有創(chuàng)建出一個(gè)新的應(yīng)用來。然而在真實(shí)的項(xiàng)目,許多產(chǎn)品如今往往依然運(yùn)行在基于復(fù)雜架構(gòu)設(shè)計(jì)和傳統(tǒng)技術(shù)實(shí)現(xiàn)的遺留系統(tǒng)上,并依賴著它們, 如何摸索出有效方法應(yīng)對(duì)這些遺留系統(tǒng), 已經(jīng)成為我們最需解決的問題之一。

隨著不同產(chǎn)品的推出、不同客戶,不同版本的發(fā)布,需要維護(hù)的遺留代碼越來越多,重構(gòu)也就在所難免. 迄今為止所有的軟件系統(tǒng)都會(huì)變成遺留系統(tǒng),并且都遭遇了緩慢,不可抗拒的腐化,因此軟件開發(fā)人員不得不面對(duì)既有系統(tǒng)的混亂代碼.而本課程正是告訴你如何重構(gòu)既有的遺留系統(tǒng), 如何重構(gòu)代碼,重構(gòu)設(shè)計(jì),重構(gòu)架構(gòu).

 

這就是本課程所要講述的內(nèi)容---重構(gòu)。簡(jiǎn)言之,該課程教你如何扭轉(zhuǎn)系統(tǒng)腐化,重構(gòu)復(fù)雜遺留系統(tǒng),減低維護(hù)成本。在面對(duì)一個(gè)錯(cuò)綜復(fù)雜的,不透明的,令人費(fèi)解的系統(tǒng)時(shí)如何慢慢地,逐步地將其變成一個(gè)簡(jiǎn)單的,有良好組織和設(shè)計(jì)的系統(tǒng)。

 

【培訓(xùn)特色】

本課程注重實(shí)戰(zhàn),采用案例貫穿方式完成實(shí)踐,收集了大量的真實(shí)案例,針對(duì)項(xiàng)目過程中技術(shù)人員常犯的錯(cuò)誤進(jìn)行了匯總,研討,并形成培訓(xùn)教程。本次培訓(xùn)從程序員的編程思維開始講解,通過大量的真實(shí)案例,詳細(xì)地介紹了重構(gòu)需要注意的要點(diǎn)以及難點(diǎn),這些知識(shí)都是講師十幾年經(jīng)驗(yàn)的總結(jié)。

本次課程1/3時(shí)間講解核心思想,1/3時(shí)間動(dòng)手重構(gòu)實(shí)踐,1/3點(diǎn)評(píng)分析總結(jié)。

【培訓(xùn)對(duì)象】

各類軟件研發(fā)中心的軟件設(shè)計(jì)師、架構(gòu)師, 項(xiàng)目經(jīng)理,技術(shù)總監(jiān),質(zhì)量部門經(jīng)理。對(duì)于重構(gòu)技術(shù)懷有疑問和困惑,需要梳理解答的團(tuán)隊(duì)和個(gè)人,效果更佳。

 

【學(xué)員基礎(chǔ)】

學(xué)員學(xué)習(xí)本課程應(yīng)具備下列基礎(chǔ)知識(shí):

目前正在面臨復(fù)雜遺留系統(tǒng),必須需要維護(hù)和重構(gòu)

具有面向?qū)ο蠡靖拍?span>,熟悉基本設(shè)計(jì)模式

 


【課程大綱】

以下大綱內(nèi)容較多,實(shí)際授課時(shí)根據(jù)學(xué)員課前調(diào)查進(jìn)行調(diào)整,并且實(shí)際授課不一定按此順序。

?
<del id="k20eo"><dfn id="k20eo"></dfn></del>
  • <strike id="k20eo"><input id="k20eo"></input></strike><fieldset id="k20eo"><input id="k20eo"></input></fieldset>
    • <ul id="k20eo"></ul>

       

      授課內(nèi)容

      第一部分  為什么軟件需要及時(shí)重構(gòu)

      第一單元  軟件腐爛--重構(gòu)的必要性

      內(nèi)容一:軟件業(yè)者的反思: 軟件腐爛

      1.       軟件腐爛(Software rot),也叫做代碼腐爛(code rot)或軟件腐朽(software decay)。它描述了隨著時(shí)間的逝去感知到軟件的緩慢衰退,其將導(dǎo)致它變得不完善、不可使用或難以維護(hù)。

      2.       軟件腐爛(Software rot)有兩種形式:

      3.       1)隱匿的腐爛:軟件逐漸不再(仍)被使用隨著剩余的應(yīng)用程序的改變變得不能用。它已經(jīng)被觀察到不再被使用的軟件有可能一年的半衰期;

      4.       2) 活動(dòng)的腐爛:軟件隨著不斷地被修改趨向于失去它的完整性。

      5.       破窗效應(yīng)與技術(shù)債務(wù)

      6.       案例演示1-通過演示大型項(xiàng)目,隨著客戶需求的變化,導(dǎo)致軟件結(jié)構(gòu)混亂,大家反思,為什么?  你認(rèn)為軟件腐爛的原因? 反思你們公司的軟件系統(tǒng)也面臨這樣的問題嗎?

       

       

      第二部分  重構(gòu)

      第二單元  何為重構(gòu)

      內(nèi)容一:重構(gòu)

      1.       重構(gòu)概述

      2.       何時(shí)重構(gòu)

      3.       重構(gòu)的誤區(qū)

      4.       重構(gòu)是持續(xù)進(jìn)行的,不要先編寫爛代碼,再抽出重構(gòu)

      5.       如何發(fā)現(xiàn)哪些地方需要重構(gòu)

      6.       如何保證重構(gòu)的正確

      7.       如何測(cè)試重構(gòu)

      8.       通過一個(gè)小案例演示重構(gòu)的基本思想(什么時(shí)間重構(gòu),如何發(fā)現(xiàn)重構(gòu)點(diǎn),如何保證重構(gòu)的正確性,后期如何驗(yàn)收)

       

      內(nèi)容二:案例通過實(shí)際項(xiàng)目演示重構(gòu)

      1.       介紹項(xiàng)目需求情況,進(jìn)行設(shè)計(jì)

      2.       閱讀代碼指出代碼壞癥狀

      3.       通過重構(gòu)逐步改善代碼質(zhì)量

      4.       通過該案例演示重構(gòu)的過程,我們遇到的難處,如何解決?

       

      內(nèi)容三:重構(gòu)關(guān)鍵代碼的壞味道

      1.       代碼壞味道概述

      2.       代碼壞味道的分類

      3.       識(shí)別代碼壞味道,是重構(gòu)的最重要一步

      4.       所謂重構(gòu),無非就是嗅到壞味道,然后,一小步一小步的改了它。問題是,很多人對(duì)壞味道的容忍度讓他們嗅不到壞味道,

      5.       案例分析通過真實(shí)項(xiàng)目的代碼,分析代碼壞味道

       

      1.        

      第二單元  重構(gòu)

      內(nèi)容四一:重構(gòu)

      1.       重構(gòu)手法概述

      2.       簡(jiǎn)要演示重構(gòu)的主要手法

      3.       使用IDE重構(gòu)工具進(jìn)行重構(gòu)

      4.       通過案例演示如何通過重構(gòu)工具完成重構(gòu)

       

      內(nèi)容二:Rhythm of Refactoring -baby step

      1.       Baby steps involve making a few code changes and then checking your work by running tests. Typical refactorings take seconds or minutes to perform

      2.       The Rhythm of Refactoring goes like this:

      a)      Verify that all automated tests (microtests) pass

      b)     Decide what code to change

      c)      Implement one or more refactorings carefully

      d)     Run the microtests whenever you wish to confirm that changes have not altered system behavior

      e)     Repeat until the refactoring is complete or revert to an earlier state

      3.        

       

       

      第二單元  重構(gòu)難題

      內(nèi)容一:重構(gòu)技術(shù)難題

      1.       如何發(fā)現(xiàn)重構(gòu)點(diǎn)

      2.       知道重構(gòu)的目標(biāo)(結(jié)果)

      3.       如何去重構(gòu)—重構(gòu)實(shí)踐

      4.       如何保證重構(gòu)的正確性-單元測(cè)試

       

      內(nèi)容二:重構(gòu)業(yè)務(wù)難題

      1.       重構(gòu)手法概述

      2.       簡(jiǎn)要演示重構(gòu)的主要手法

       

      第三部分  重構(gòu)實(shí)戰(zhàn)1一函數(shù)相關(guān)重構(gòu)

      第三單元  函數(shù)重構(gòu)

       

      內(nèi)容一:函數(shù)的重構(gòu)

      1.       函數(shù)的重構(gòu)

      2.       巨型函數(shù)的種類

      a)      項(xiàng)目列表式巨型方法

      b)     鋸齒狀巨型方法

      3.       分解函數(shù)

      4.       助手方法提取

      5.       利用自動(dòng)重構(gòu)對(duì)付巨型方法

      6.       利用手工重構(gòu)對(duì)付巨型方法

      7.       引入感知變量

      8.       函數(shù)依賴收集

      9.       分解助手方法和方法對(duì)象

      10.   通過案例介紹長(zhǎng)函數(shù)的重構(gòu)典型實(shí)踐

       

       

      第三單元  函數(shù)策略和技巧

       

      內(nèi)容一: Refactoring Strategies & Tactics

      1.       Refactoring Strategy: Piecemeal Refactoring

      2.       Refactoring Strategy:Divide & Conquer

      3.       Refactoring Strategy:Narrowed Change

      4.       Refactoring Strategy:Parallel Change

      5.       Refactoring Strategy:Unified Methods

      6.       Refactoring Strategy:Evolved Target

      7.       Refactoring Strategy: Graceful Retreat

      8.       Refactoring Strategy: Gradual Cutover

      9.       Refactoring Strategy: Preparing for Change 

      10.   Refactoring Tactic: Rejected Parameter

      11.   Refactoring Tactic: Caller Swap

      12.   Refactoring Tactic:Encapsulated Dependency

       

      第四部分  重構(gòu)實(shí)戰(zhàn)2一類重構(gòu)

      第四單元  類重構(gòu)

       

      內(nèi)容一:重構(gòu)案例該案例重點(diǎn) 巨大類的重構(gòu)

      1.       重構(gòu)大類

      1.       對(duì)象的職責(zé)重構(gòu)

      2.       職責(zé)的識(shí)別

      a)      方法分組

      b)     觀察隱藏方法

      c)      尋找可以更改的原因

      d)     尋找內(nèi)部關(guān)系

      e)     尋找主要職責(zé)

      f)      接口分離接口隔離原則

      3.       提取類和接口

      4.       通過案例介紹如何重構(gòu)巨大的類

       

      第五部分  重構(gòu)實(shí)戰(zhàn)3一重構(gòu)到模式

      第五單元  重構(gòu)到模式

       

       

       

      內(nèi)容一:案例---重構(gòu)設(shè)計(jì)方案引入設(shè)計(jì)模式

      1.       通過項(xiàng)目分析重構(gòu)到模式的手段

      2.       構(gòu)造Template Method

      3.       Composite取代一/多之分

      4.       引入Null Object

      5.       Adapter統(tǒng)一接口

      6.       Fatory Method引入多態(tài)創(chuàng)建

      5.       通過案例介紹如何重構(gòu)原始設(shè)計(jì)方案,演示如何通過重構(gòu)導(dǎo)入設(shè)計(jì)模式

       

      內(nèi)容二:案例---重點(diǎn)介紹重構(gòu)基本類型依賴和對(duì)應(yīng)模式

      1.       通過案例學(xué)習(xí)以下重構(gòu)到模式手段

      2.       State取代狀態(tài)改變條件語(yǔ)句

      3.       Strategy取代條件邏輯

      4.       Composite取代隱含樹

      5.       Interpreter取代隱式語(yǔ)言

      6.       轉(zhuǎn)移裝飾功能到Decorator

      7.       Builder封裝Composite

      8.       重點(diǎn)學(xué)習(xí)案例的重構(gòu)到模式的過程

       

      內(nèi)容三:案例---重點(diǎn)介紹重構(gòu)代碼重復(fù)和對(duì)應(yīng)模式

      7.       通過案例學(xué)習(xí)以下重構(gòu)到模式手段

      8.       構(gòu)造Template Method

      9.       Composite取代一/多之分

      10.   引入Null Object

      11.   Adapter統(tǒng)一接口

      12.   Fatory Method引入多態(tài)創(chuàng)建

      13.   重點(diǎn)學(xué)習(xí)案例的重構(gòu)到模式的過程

       

      內(nèi)容四:案例---重點(diǎn)介紹重構(gòu)代碼過長(zhǎng)/過大的類/方法和對(duì)應(yīng)模式

      1.       轉(zhuǎn)移聚集操作到Vistor

      2.       Strategy取代條件邏輯

      3.       Command取代條件調(diào)度程序

      4.       轉(zhuǎn)移聚集操作到Collecting Parameter

      5.       重點(diǎn)學(xué)習(xí)案例的重構(gòu)到模式的過程

       

      內(nèi)容五:案例---重點(diǎn)介紹條件邏輯過度復(fù)雜和對(duì)應(yīng)模式

      1.       Strategy取代條件邏輯

      2.       State取代狀態(tài)改變條件語(yǔ)句

      3.       轉(zhuǎn)移裝飾功能到Decorator

      4.       引入Null Object

      5.       Command替換條件調(diào)度程序

      6.       轉(zhuǎn)移聚集操作到Visitor

      7.       重點(diǎn)學(xué)習(xí)案例的重構(gòu)到模式的過程

       

      第六部分  重構(gòu)實(shí)戰(zhàn)4一模塊/組件重構(gòu)

      第六單元 模塊重構(gòu)

       

       

       

      內(nèi)容一:模塊重構(gòu)

      1.       優(yōu)良的系統(tǒng)設(shè)計(jì)意味著我們把系統(tǒng)分割成了一個(gè)個(gè)可單獨(dú)部署的組件,單獨(dú)部署意味著如果更改了一個(gè)組件,我們也不需要重新部署其他組件。

      2.       組件和包 壞味道

      3.       模塊之間解耦

      4.       組件的內(nèi)聚性實(shí)踐

      5.       組件的依賴性實(shí)踐

      6.       企業(yè)應(yīng)用系統(tǒng)組件設(shè)計(jì)典型實(shí)踐

      7.       分析某項(xiàng)目,演示模塊重構(gòu),如何在大型應(yīng)用系統(tǒng)進(jìn)行模塊重構(gòu)

       

       

      第七部分  重構(gòu)實(shí)戰(zhàn)5一數(shù)據(jù)庫(kù)重構(gòu)

      第七單元  數(shù)據(jù)庫(kù)重構(gòu)(該部分根據(jù)需求,可以裁剪)

      內(nèi)容一: 數(shù)據(jù)重構(gòu)過程

      1.       驗(yàn)證數(shù)據(jù)庫(kù)重構(gòu)是否合適

      2.       選擇最合適的數(shù)據(jù)庫(kù)重構(gòu)

      3.       讓原來的數(shù)據(jù)庫(kù)schema過時(shí)

      4.       前測(cè)試、中測(cè)試和后測(cè)試

      5.       修改數(shù)據(jù)庫(kù)schema

      6.       遷移源數(shù)據(jù)

      7.       重構(gòu)外部訪問程序

      8.       運(yùn)行回歸測(cè)試

      9.       對(duì)工作進(jìn)行版本控制

      10.   結(jié)束此次重構(gòu)

      11.   分析多年遺留的復(fù)雜項(xiàng)目,演示如何重構(gòu)數(shù)據(jù)庫(kù), 數(shù)據(jù)庫(kù)重構(gòu)的一般步驟,和普通的應(yīng)用程序代碼的重構(gòu)的不同點(diǎn)。

       

      內(nèi)容二: 數(shù)據(jù)庫(kù)重構(gòu)策略

      1.       小的變更更容易進(jìn)行

      2.       唯一地標(biāo)識(shí)每一次重構(gòu)

      3.       通過許多小變更實(shí)現(xiàn)一次大變更

      4.