好程式需要至少寫兩遍

2021-06-01 09:05:20 字數 1212 閱讀 3134

great code is written twice (or more)》這篇文章翻譯而來。

最近這些年,越來越多的人開始轉向敏捷開發。各種敏捷開發技術並不新鮮,大多是在80和90年代發展形成。但只是在最近這些年,程式設計師和(更重要的是)一些商業顧問,架構師,客戶開始變得喜歡和擁抱敏捷開發。

進化中的需求

現在的一種普遍的認識是,在開始編碼前,你不可能把所有的需求都寫完備。這些需求的確定是乙個逐漸發展進化的過程。使用短開發周期/springts,我們一步步的開發程式,使用多次迭代的方式完成從客戶方得到的最新需求。這些都是基於乙個進化的思想。就像生活中,我們總是通過一步步的改進來達到最好一樣。

進化中的**!

可是,這就完事了嗎?如今大部分的程式設計師都認識到了需求必定是一步步的挖掘出來的。但他們卻忘了自己的工作!?他們仍然認為他們的框架和架構在專案開始之初就定型了。同樣,**一旦寫成,程式就完成了…不是嗎?

錯。以我的經驗,所有好的程式都至少要寫兩遍。第一編是你過於倉促,不能很好的理解需求、實現需求。不錯,當看到了某種業務模式,我們知道要提煉出方法,圍繞著它實現業務職責。你最終寫成的**是非常好的,但,它不是優秀的。

在我們目前的專案中,幾乎所有的重要功能模組都從頭重寫過數次。慢慢的但明顯的,**變得越來越好。一旦你對某段程式做了第三或第四次增補,或又找到了乙個bug,你能感覺到這程式什麼地方有異味。你開始躲避觸碰這段程式,你為不需要在處理這段程式而高興。當有了這樣的感覺後我會怎麼做?我會刪了這些**。

可是…可是…這樣你就要完全從頭開始了!?

你又錯了!當然,ide裡空了,**全沒了,也許一些測試程式會存留下來。但你卻對你的**應該做什麼有了紮實的認識。你也知道以前這段**是什麼樣的,你知道它以前的內傷和異味在**!有了這些認識,你能寫出更好,甚至是非常優秀的**!不錯,我們也可以保留這些**,使用一些重構措施…但你可能再也找不到這樣好的從頭開始、更好的編寫它的機會了。

再次,就像生活中的所有事情:要讓事情變的完美,你需要經過多次的進化迭代。對你的需求是這樣,對你的架構和**也是如此。

寫兩遍,就意味著兩倍的時間嗎?

當告訴人們我的觀點是所有的程式都至少寫兩遍時,他們擔心花費兩倍的專案時間。但事實遠非如此。下面是原因:

祝你好運,堅持重新改進你的**!

英文出自:redcode

好程式需要你 至少 寫兩遍

最近這些年,越來越多的人開始轉向敏捷開發。各種敏捷開發技術並不新鮮,大多是在 80 和 90年代發展形成。但只是在最近這些年,程式設計師和 更重要的是 一些商業顧問,架構師,客戶開始變得喜歡和擁抱敏捷開發。進化中的需求 現在的一種普遍的認識是,在開始編碼前,你不可能把所有的需求都寫完備。這些需求的確...

寫乙個Filter至少需要那些東西。 轉貼

寫乙個filter至少需要那些東西。文章資訊 智慧型的魚 2004 12 20 出處 天極網 1 filter的實現類 在這裡就是cmyfilter類,在這個類裡你可以實現自己的邏輯上的功能,包括定義你的filter的特性,給你的filter配備pin介面等。2 com元件的引出函式 五個全域性函式...

寫面試程式需要注意

這麼乙個小不點的函式,他從三個方面考查 1 程式設計風格 2 出錯處理 3 演算法複雜度分析 用於提高效能 規則1 2 1 為了防止標頭檔案被重複引用,應當用ifndef define endif結構產生預處理塊。建議1 2 2 不提倡使用全域性變數,盡量不要在標頭檔案中出現象extern int ...