摘要:讓我們來看看重寫代碼會失敗的五個征兆吧。重寫的價值不夠明確重寫代碼必須要產(chǎn)生新的價值。因為重寫代碼和主要的重構(gòu)工作會耗費大量資源,如果不能在半年內(nèi)看到有價值的產(chǎn)出,那問題就大了。
凡事預(yù)則立不預(yù)則廢。在公司里呆久了,總會遇到一些軟件項目需要重寫代碼(或換個全新語言、或進(jìn)行重大版本升級等)。重寫整個系統(tǒng)的風(fēng)險極大,資源投入到了幾個月的重寫過程,就沒法投資在開發(fā)新功能上了。讓我們來看看重寫代碼會失敗的五個征兆吧。
重寫的價值不夠明確
重寫代碼必須要產(chǎn)生新的價值。 因為重寫代碼和主要的重構(gòu)工作會耗費大量資源,如果不能在半年內(nèi)看到有價值的產(chǎn)出,那問題就大了。如果你是這個項目的高管而且你自己不確定重寫代碼增加的價值是什么,那么可能終止更好;如果你確定你想要重寫,那就需要做用戶調(diào)研或者設(shè)計構(gòu)思,然后重新評估重寫這個項目到底是否符合用戶的需求。
你正在進(jìn)行大切換式的重寫
切換更容易,大切換重寫是所有代碼重寫的警報,它只適用于非常簡單的系統(tǒng)。 已經(jīng)有過大量的論述,關(guān)于為什么采用更為漸進(jìn)的重寫方法更好。如果你是一名高管,你需要打電話給你的開發(fā)人員,因為他們會努力進(jìn)行大規(guī)模的轉(zhuǎn)換。 當(dāng)然,他們從不使用這些詞,而是說在“重新設(shè)計”之類的,但這是一回事。 問他們 - 什么時候能在生產(chǎn)中看到這些代碼? 如果答案超過3個月......他們可能正在進(jìn)行轉(zhuǎn)換。
重寫的特征速度比遺留系統(tǒng)慢
這很簡單:如果您在進(jìn)行重寫時,同時改進(jìn)現(xiàn)有的舊產(chǎn)品以保持競爭優(yōu)勢(一個好主意),但重寫系統(tǒng)無法以更快的速度添加與舊系統(tǒng)相同的功能 ,重寫代碼大概永遠(yuǎn)不會完成。重寫研發(fā)團(tuán)隊需要由你的超級巨星開發(fā)人員組成,他們了解最新的技術(shù),并且了解如何掌握遺留系統(tǒng)的復(fù)雜性。此外,確保重寫團(tuán)隊能夠持續(xù)快速地進(jìn)展! 不要在重寫的前2-3個月根據(jù)重寫速度做出判斷,項目開始時總是挺快的,因為還不復(fù)雜,但隨著時間的推移,它會變慢……
您不與那些曾經(jīng)是舊系統(tǒng)專家的人合作
舊系統(tǒng)的前開發(fā)人員甚至是高級用戶,這些人對于重寫項目是至關(guān)重要的,因為他們了解關(guān)于應(yīng)用程序的所有問題。 如果沒有這些人,您將成為Tesler定律的受害者,最終重寫的版本可能價值還低于舊版本,不如原來的好用。請他們幫助做測試,他們能幫助發(fā)現(xiàn)重寫中的很多細(xì)微實現(xiàn)錯誤,您可能永遠(yuǎn)無法發(fā)現(xiàn)。讓這些人參與進(jìn)來。 讓他們覺得他們有助于重寫(確實是),盡早并經(jīng)常獲得他們的反饋。
你打算刪除一些很難的功能
讓我們假設(shè)您正在重寫一個取得了一定成功并積極為用戶提供價值的系統(tǒng)。 很容易陷入使用“簡化”構(gòu)建名稱中的較少功能進(jìn)行重建的陷阱。 但這有意義嗎? 是的,舊的應(yīng)用程序可能很慢而且很難看。 但想一想 - 你的用戶愿意忍受緩慢而丑陋的系統(tǒng)! 如果您刪除他們正在使用的功能,您的用戶將討厭您。這是否意味著您應(yīng)該盲目復(fù)制舊有系統(tǒng)的功能? 當(dāng)然不是! 傳統(tǒng)技術(shù)所需的一些功能已經(jīng)變得僵化。 現(xiàn)在有類似OCR的東西,可以代替表單字段的頁面。 這意味著您可以自由地重新構(gòu)想這些功能或創(chuàng)建一個允許您刪除操作的新流程,但無論多么誘人,您都無法刪除要完成的工作/整個故事。
回顧一遍以上要點
我希望你注意到重寫意味著要聚焦真正的,立足現(xiàn)在的價值交付。這就是為什么每次重寫都必須從徹底的設(shè)計階段開始,以發(fā)掘所有增值功能。該sprint的核心方法是通過訪談從最終用戶和利益相關(guān)者那里獲取反饋,并通過原型確認(rèn)您的想法。這確保了產(chǎn)品以您期望的方式滿足市場需求,并在重寫期間留出創(chuàng)新空間,這是基于真人的真實反饋。
如果你覺得你不得不選擇通過重寫代碼復(fù)制一個特別繁重的舊功能和添加新功能,你有一些選擇。一種選擇是使用Martin Fowler的扼殺者模式,您可以在重寫時創(chuàng)建新功能,同時相對無縫地與舊功能集成,從而保留這些功能而無需重新創(chuàng)建它們。
本文由網(wǎng)易云社區(qū)簡譯。更多詳情請參見原文。
文章來源: 網(wǎng)易云社區(qū)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/25403.html
摘要:以下總結(jié)了很多企業(yè)在他們的私有云項目中會犯的八大錯誤。然而,其他項目,公司政治和團(tuán)隊成員之間不同程度的承諾可能造成私有云項目的大問題。否則,私有云項目將會有延誤的風(fēng)險和代價高昂的疏漏。 盡管私有云擁有很多的益處,但其部署充滿了潛在的風(fēng)險。以下總結(jié)了很多企業(yè)在他們的私有云項目中會犯的八大錯誤。私有云似乎是一個了不起的想法。他們提供了公有云的靈活性,可擴展性和自服務(wù)的能力,但又擁有私人數(shù)據(jù)中心的...
摘要:本文詳細(xì)描述了堆內(nèi)存模型,垃圾回收算法以及處理內(nèi)存泄露的最佳方案,并輔之以圖表,希望能對理解內(nèi)存結(jié)構(gòu)有所幫助。該區(qū)域也稱為內(nèi)存模型的本地區(qū)。在中,內(nèi)存泄露是指對象已不再使用,但垃圾回收未能將他們視做不使用對象予以回收。 本文詳細(xì)描述了 Java 堆內(nèi)存模型,垃圾回收算法以及處理內(nèi)存泄露的最佳方案,并輔之以圖表,希望能對理解 Java 內(nèi)存結(jié)構(gòu)有所幫助。原文作者 Sumith Puri,...
摘要:使用原型,重寫了數(shù)組的幾個簡單的方法。我在這拋磚引玉,期待大神更多對象的其他的方法擴展 使用原型,重寫了數(shù)組的push、pop、shift、unshift幾個簡單的方法。我在這拋磚引玉,期待大神更多對象的其他的方法擴展 Array.prototype.push = function(){ //this: 1,2,3 //...
摘要:開發(fā)原因是一個非常小的類庫,通過代碼生成來提供高性能的反射處理,自動為字段提供訪問類,訪問類使用字節(jié)碼操作而不是的反射技術(shù),因此非常快。 開發(fā)原因 Reflec...
摘要:在多線程編程中我們會遇到很多需要使用線程同步機制去解決的并發(fā)問題,而這些同步機制就是多線程編程中影響正確性和運行效率的重中之重。這五個方法之所以能指定同步器的行為,則是因為中的其他方法就是通過對這五個方法的調(diào)用來實現(xiàn)的。 在多線程編程中我們會遇到很多需要使用線程同步機制去解決的并發(fā)問題,而這些同步機制就是多線程編程中影響正確性和運行效率的重中之重。這不禁讓我感到好奇,這些同步機制是如何...
閱讀 2187·2021-09-22 16:05
閱讀 9522·2021-09-22 15:03
閱讀 2946·2019-08-30 15:53
閱讀 1765·2019-08-29 11:15
閱讀 975·2019-08-26 13:52
閱讀 2433·2019-08-26 11:32
閱讀 1874·2019-08-26 10:38
閱讀 2639·2019-08-23 17:19