<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### 怎么對經理說? 「該怎么跟經理說重構的事?」這是我最常被問到的問題之一。如果這位經理懂技術,那么向他介紹重構應該不會很困難。如果這位經理只對質量感興趣,那么問題就集中到了「質量」上面。此時,在復審過程中使用重構,就是一個不錯的辦法。 大量研究結果顯示,「技術復審」是減少錯誤、提高開發速度的一條重要途徑。隨便找一本關于復審、審査或軟件開發程序的書看看,從中找些最新引證,應該可以讓大多數經理認識復審的價值。然后你就可以把重構當作「將復審意見引入代碼內」的方法來使用,這很容易。 當然,很多經理嘴巴上說自己「質量驅動」,其實更多是「進度驅動」。這種情況下我會給他們一個較有爭議的建議:不要告訴經理! 這是在搞破壞嗎?我不這樣想。軟件開發者都是專業人士。我們的工作就是盡可能快速創造出髙效軟件。我的經驗告訴我,對于快速創造軟件,重構可帶來巨大幫助。如果需要添加新功能,而原本設計卻又使我無法方便地修改,我發現先「進行重構」再「添加新功能」會更快些。如果要修補錯誤,我需得先理解軟件工作方式,而我發現重構是理解軟件的最快方式。受進度驅動的經理要我盡可能快速完事,至于怎么完成,那就是我的事了。我認為最快的方式就是重構,所以我就重構。 **間接層和重構(Indirection and Refactoring)** ——Kent Beck 「計算機科學是這樣一門學科:它相信所有問題都可以通過多一個間接層(Indirection)來解決。」——Dennis DeBruler 由于軟件工程師對間接層如此醉心,你應該不會驚訝大多數重構都為程序引入了更多間接層。重構往往把大型對象拆成數個小型對象,把大型函數拆成數個小型函數。 但是,間接層是一抦雙刃劍。每次把一個東西分成兩汾,你就需要多管理一個東西。如果某個對象委托(delegate)另一對象,后者又委托另一對象,程序會愈加難以閱讀。基于這個觀點,你會希望盡量減少間接層。 別急,伙計!間接層有它的價值。下面就是間接層的某些價值: - 允許邏輯共享〔To enable sharing of logic)。比如說一個子函數(submethod)在兩個不同的地點被調用,或superclass的某個函數被所有subclass共享。 - 分開解釋「意圖」和「實現](To explain intention and implementation separately)。你可以選擇每個class和函數的名字,這給了你一個解釋自己意圖的機會。class或函數內部則解釋實現這個意圖的作法。如果class和函數內部又以「更小單元的意圖」來編寫,你所寫的代碼就可以『與其結構中的大部分重要信息溝通」。 - 將變化加以隔離(To isolate change)。很可能我在兩個不同地點使用同一對象,其中一個地點我想改變對象行為,但如果修改了它,我就要冒「同時影響兩處」的風險。為此我做出一個subclass,并在需要修改處引用這個subclass。現在,我可以修改這個subclass而不必承擔「無意中影響另一處」的風險。 - 將條件邏輯加以編碼(To encode conditional logic)。對象有一種匪夷所思的機制:多態消息(polymorphic messages),可以靈活彈性而清晰地表達條件邏輯。只要顯式條件邏輯被轉化為消息(message [2])形式,往往便能降低代碼的重復、增加清晰度并提髙彈性。 [2]譯注:此處的「消息」(message)是指面向對象古典論述中的意義。在那種場合中,「調用某個函數(method)」就是「送出消息(message)給某個對象(object)」。 這就是重構游戲:在保持系統現有行為的前提下,如何才能提高系統的質量或降低其成本,從而使它更有價值? 這個游戲中最常見的變量就是:你如何看待你自己的程序。找出一個缺乏「間接層利益」之處,在不修改現有行為的前提下,為它加入一個間接層。現在你獲得了一個更有價值的程序,因為它有較髙的質量,讓我們在明天(未來)受益。 請將這種方法與「小心翼翼的事前設計」做個比較。推測性設計總是試圖在任何一行代碼誕生之前就先讓系統擁有所有優秀質量,然后程序員將代碼塞進這個強健的骨架中就行了。這個過程的問題在于:太容易猜錯。如果運用重構,你就永遠不會面臨全盤錯誤的危險。程序自始至終都能保持一致的行為,而你又有機會為程序添加更多價值不菲的質量。 還有一種比較少見的重構游戲:找出不值得的間接層,并將它拿掉。這種間接層常以中介函數(intermediate methods)形式出現,也許曾經有過貢獻,但芳華已逝。它也可能是個組件,你本來期望在不同地點共享它,或讓它表現出多態性(polymorphism),最終卻只在一處使用之。如果你找到這種「寄生式間接層」,請把它扔掉。如此一來你會獲得一個更有價值的程序,不是因為它取得了更多(先前所列)的四種優秀質量,而是因為它以更少的間接層獲得一樣多的優秀質量。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看