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