導航:首頁 > 程序命令 > 程序員升級代碼編寫量下降

程序員升級代碼編寫量下降

發布時間:2022-08-25 05:13:33

『壹』 程序員怎麼才能提高代碼編寫速度

萬行代碼這個有些扯,只能說應該幹活麻利些。 敲鍵盤快是個很不錯的特效,就像吉他手solo秀手速一樣, 我覺得每個程序員都應該追求一下。 順手的鍵盤機械鍵盤還是筆記本那種鍵盤,抑或10塊錢一個的隨機贈送鍵盤,總之挑一個自己適合的。 遠離滑鼠滑鼠的定位功能遠沒有鍵盤精準。用游標鍵移動幾下,和滑鼠移動幾十個像素,速度上完全不能比。 並且敲鍵盤是講究節奏的,當你雙手都放在鍵盤上的時候,如果為了某些操作,而去拿滑鼠,就會破壞這個節奏,這樣會影響你的輸入速度。所以能不用滑鼠就不用滑鼠,遇到一定要去菜單里點個東西的時候,不放去看一眼快捷鍵是什麼,然後雙手回到鍵盤,用快捷鍵完成輸入。時間長了,就都記住了。現在的開發環境快捷鍵都是很全的。 (不知道有沒有人用VC6的 alt+E+I) 標准鍵盤指法這個不多說,混這碗飯吃的,這個都不會就說不過去了熟悉編輯器常用操作1. 控制游標的基本操作 行首,行尾,頁首,頁尾, 整詞移動,常用的書簽功能 2. shift鍵的含義 在編輯器中,shift鍵可以理解成取反(不只是編輯器,大部分環境下都是如此) 所以按住shift移動游標就是高亮顯示 VC中ctrl+U是將選中字元小寫,ctrl+shift+u就是全大寫 3. 行選取。所謂行選取,就是shift+下移游標,這樣選取的一行,就是帶有換行符的了。再粘貼到別的地方的時候,就不用自己粘回車了。 這里比較容易發生的套路是:游標移動到要復制的行,然後兩下home鍵,將游標移動到行首,然後按shift鍵同時下移游標(這是vc的操作哈,也許有不太一樣的) 4. 復制粘貼 復制粘貼經常用的是ctrl+c和ctrl+v。 這里有強烈推薦的操作方式 復制:ctrl+insert, 粘貼:shift+insert。 這個方案的好處是兩只手來操作,容易保持節奏,並且不容易犯錯。 中文的問題避免不了會輸入中文,但不要把中文設成默認輸入法,並且把ctrl+space的輸入法切換快捷鍵改成生僻一些的,避免誤操作切換出來 遠離IDE的函數提示(這個有爭議,可以不認同)現在的IDE都很人性化,你輸一個字母,就會出來一堆提示讓你選, 甚至輸一個括弧,就自動幫你把另一半括弧給敲出來了。 遠離這些, 能關都關掉,否則你永遠連一個函數都拼不出來。 這東西是破壞你輸入節奏的元兇之一。

『貳』 程序員怎麼提高代碼編寫的速度

一、強調基礎知識

基礎這個東西不是用說就能有的,常用的東西只有牢牢的記住熟悉才能瞭然於胸。如果你還在為一個基礎函數參數返回值困擾,那你要多去背背理解基礎知識別無它法。


二、學會找輪子,不要去造輪子


這個觀點其實是有異議的,不造輪子是指你要去用一些成型庫函數和api,不要唯我獨尊,什麼都自己寫,這樣的話你基本脫離不了低級趣味了。比如一個消息隊列在c++中就有實現,難道你會為一個只用它來存幾個字元串消息,自己寫個消息隊列實現?


三、找個好的IDE


java開發的弄個eclipse,window開發用vs,linux開發用vim。一個好的IDE能讓你事半功倍。更何況是在天朝,大部分都在ctrl+c、ctrl+v。一個好的IDE,自動補全,函數跳轉查找,自動排版,檢錯。你決定使用一個IDE,你就應該去認認真真的學習它的快捷鍵和一桶使用方法。


四、重思考


一個段好的代碼並不是它們月復雜越好,簡單實現復雜功能才是我們最需要的,liunx內核代碼雖大,但是那些金典的演算法實現的代碼精煉的不能再精煉了。昆明北大青鳥http://www.kmbdqn.cn/建議要提高編碼速度更重要的是簡化梳理程序流程,以最小的代碼量完成功能。所以編程最重要的事情是思考。


『叄』 程序開發者們對於未來程序開發的一些趨勢看法。。。未來的程序開發是不是會出現代碼量越來越少這樣的趨勢

也許吧

『肆』 如何提升程序員的代碼編寫能力

一、先列三個常見的開發場景:

1、拿到一個模塊詳細設計文檔,大部分程序員的通常做法就是開始搭建界面代碼,然後從第一個按鈕點擊事件或頁面Load事件開始寫第一行業務代碼。寫的差不多了,就運行一下,發現哪裡不是自己想的那樣,就改改,直到改到是自己預想的那樣。

2、做完了一個功能模塊或幾塊相關聯的功能模塊,輸入111asd,發現新建正常、保存正常,就提交給測試人員。測試員用測試用數據、測試場景用例來測試,發現有問題,就登記bug。對於嚴重的影響下一步測試的BUG,測試員就用內部IM通知這個開發人員。對於不影響繼續往下測試的BUG,測試員就登記下來,等程序員有空時處理。

3、程序員一般工作不希望大家打擾,所以開發起來就是開發。等手頭開發告一段落,就看看BUG庫。發現有與自己有關的BUG,就從第一個BUG開始看起。就開始通過IM和測試員掰扯起來(這不是個BUG啊、業務邏輯不是你想的那樣啊、我這里不能重現啊、你給的信息描述不清晰啊),於是IM幾來幾往,甚至跑過去當面交流一番,甚至會拉扯上產品經理一起討論,更甚者需要項目經理或產品經理發起一個會議來集體討論一下

這是不是很熟悉呢?這就是大部分程序員開發的三個步驟:寫代碼、自測、修復BUG。

二、說好的代碼設計、代碼測試呢?

代碼設計?那不是都有開發平台么,已經固化了啊。那不是維護舊功能做完善修改呢么,又不是寫新代碼,只能在現有代碼基礎上修改啊,你又不能大幅重構。

代碼測試?你丫需求討論期、產品設計期、設計評審期那麼長,都把研發項目時間佔光了,就留下2個星期讓我們寫代碼,我們哪裡有時間搞那麼深的測試。還想讓我們搞結對編程?還想讓我們搞測試驅動開發?

而且你看測試,什麼功能測試、集成測試、性能測試、安全測試、安裝部署測試、升級測試、遷移測試、UAT測試,一大堆測試,測試也需要很多時間。

一個項目,需求討論、產品范圍規劃與評審、產品設計與設計評審佔了一個半月,開發+自測就一個月,測試佔了一個半月,這就4個月了啊。

三、為啥程序員寫代碼總是寫寫測測?

剛才大家也都看到了,大部分程序員都是從界面代碼開始寫起,而且寫一寫,就運行一下看看。為什麼會是這種開發方式?

那是因為大部分程序員缺乏在腦子中的整體建模能力。只能做出來一點,真實的感覺一下,然後再往下。

有些是產品經理的上游就有問題,沒給出業務流程圖(因為產品經理也沒做過業務),也沒畫清楚產品功能操作流程圖。

為啥沒給出業務流程圖?因為產品經理不熟悉業務,另外,產品經理也沒有流程建模能力啊。為啥沒畫清楚產品功能操作流程圖啊?因為不會清晰表達流程啊。

很多產品經理、程序員,都缺乏分類、分層、相關、先後能力,更別說總結、洞察能力。

這是基本訓練,是一個做事頭腦清醒的人必備的技能,這不是一個程序員或產品經理或測試員的特定技能要求。

我經常看書就梳理書的脈絡,每看一本就寫一篇總結。我過去閑扯淡還梳理過水滸傳、紅樓夢的人物關系圖呢,其實就在事事上訓練自己的關聯性、層次性、洞察性。

我經常面試一個人時,我會問這樣的問題:「你把我剛才說的話復述一遍,另外你再回答一下我為什麼會這樣?」,其實,我就在看一個人的細心記憶、完整梳理、重現能力,我也在看一個人的梳理、總結、洞察能力。

我個人寫代碼就喜歡先理解業務流,然後理解數據表關系,然後理解產品功能操作流,大致對功能為何這樣設計、功能這樣操作會取什麼表、插入或更新哪些表,哪些表的狀態欄位是關鍵。

然後我寫代碼的時候,就根據我所理解的業務流、功能操作流、數據輸入輸出流,定義函數,定義函數的輸入與輸出。

然後,我會給函數的輸入值,賦上一些固定值,跑下來看看能否跑通這幾個關聯函數,看看還需要怎樣的新增函數,或者看看函數的輸入輸出參數是否滿足跑通。

剩下的事,就是我填肉寫詳細邏輯代碼了。

當然,大部分人沒我這樣的邏輯建模能力。怎麼閱讀理解也想像不出來,也沒法定義函數。畢竟有邏輯建模能力的程序員都很少,100個人里有10個,已經是求爺爺告奶奶好幸運了。

那怎麼辦呢?

我建議是分離分工配合,這就是現實中沒辦法的辦法。讓有邏輯建模能力的人來設計函數框架、來設計工具來設計代碼模板,然後讓沒有邏輯建模能力的人來填肉寫詳細邏輯代碼。

我們可以先從最緊要的模塊開始這么做。不緊要的模塊,還讓它放任自流,讓熟練手程序員繼續塗抹。

我曾經還讓有頭腦的程序員做榜樣,給大家分享他是怎麼規劃函數的,怎麼做維護性代碼的代碼結構改善的。但是發現效果並不佳,其他人並沒有因此能做代碼設計。可能邏輯建模能力是個人的基本素質,是從小到大訓練成型的,不是你一個大學已經幾年的人能夠短時間內可以訓練的。

所以啊,還是讓能走的人先走,讓從最緊要的模塊開始這么做。

不必擔心這樣做後,因為過去一件事被分工(一個做代碼框架一個填肉)成兩個人做了會降低工作效率。我們很多的工作效率低就是因為半瓶子醋搞出來的,來回反復修改。

真是應了劉德華在電影里說的那句話:說你又不聽,聽又聽不懂,聽懂了又不做,做又做不好,做不好還不服氣。

四、為什麼大部分程序員不做代碼測試或白盒測試或單元測試呢?

還是因為沒有代碼設計。因為沒有函數啊。所以,一個按鈕功能有多復雜,代碼就有多長。我見過2000行的函數,我也見過1000多行的存儲過程和視圖SQL。怎麼做白盒測試啊,這些代碼都粘在一起呢,要測,就得從頭到尾都得測。

所以啊,先學會設計函數,先寫好函數,這就求爺爺告奶奶了。很多開發了5年的熟練手程序員,可能都未必會寫函數。

函數的輸入輸出值就很有講究。很多人都寫死了,隨著版本迭代,發現過去定義的函數參數不夠用了,於是就新增了一個參數。然後,相關性異常就爆發了,其他關聯的地方忘改了,到底哪些有關聯,怎麼查啊,本系統沒有,沒准其他系統就調用你了,你根本不知道哪個神經人曾經COPY過你的代碼修吧修吧就改成了他的功能呢,而且裡面的很多代碼他看不懂也不敢刪,只要他實現的功能正常了他也不管了。於是,你改了你這個函數,他的系統就莫名出錯了。

所以,我一般會定義幾個對象來做參數。另外,我也很注重函數的日誌、函數的異常保護、異常拋出、異常返回。另外,我也很注重參數輸入值的合法性校驗。

所以啊,應該開發Leader們先制定函數編寫規范最佳實踐,輸入輸出參數怎麼定義比較好,函數的返回值如何定義比較好,函數的日誌記錄應該怎麼寫比較好,函數的異常保護、異常拋出、異常返回如何寫比較好。先教會一般程序員,先從會寫函數開始啊。

當然,你光有一份規范,程序員們還是不理解、不實際應用啊。所以,還得Leader們做好典型的代碼模板,裡面是符合函數規范的代碼框架,只有這樣,一般程序員們才會照貓畫虎適應了函數設計的編程習慣。

所以啊,我專門重新定義了leader的明確職責,其中第一個重要職責就是:負責工具/框架/模板/規范的制定,並且負責推廣且普及應用落地。

你不明確定義Leader的這個重要職責,你不對這個職責做明確的KPI考核,誰尿你啊。你以為好的工具/框架/模板/規范是靠人們的熱情、自發產生的么?我們還沒有那麼自覺高尚啊。

五、為什麼大部分程序員不寫注釋啊?

我經常說一句話,千萬別多寫注釋。為啥?

因為我們經常遇到的問題不是沒有注釋,而是更糟的是,注釋和事實代碼邏輯是不相符的。這就出現常見問題了:殘存下來的設計文檔是一個邏輯、注釋是一個邏輯說明、真實代碼邏輯又是一個,鍾表多了,你也不知道正確時間了。

所以啊,產品文檔、注釋、真實代碼,三者總是很難一致同步。我為了幾百人研發團隊能做到這個同步花了大量心血和辦法,但我最終也沒解決了這個問題,還把Leader們、總監們、我都搞的精疲力盡。

索性回歸到一切一切的本源,代碼,就是程序員的唯一產出,是最有效的產出。那麼,讓代碼寫的不用注釋也能看懂,咱得奔著這個目的走啊。

為啥看不懂,不就是義大利面條式代碼么,又長又互相交雜。

OK,我就規定了,每個函數不能超過50行。用這一個簡單規定和靜態代碼檢查插件,來逼迫大家嘗試著寫函數。有的函數屬於流程函數,是串起其他函數的,有的函數就是詳細實現函數,實現一個且唯一一個明確作用的。

有了流程函數和功能函數,而且每個函數不超過50行,這就比過去容易看懂了。

六、為什麼大部分程序員不抽象公共函數啊?

我經常說一句話:千萬別抽象公共函數啊。為啥?

因為大部分程序員缺乏抽象洞察能力。特別是有些積極熱情有餘、愛學習愛看書、半瓶子醋晃悠的二桿子,看了幾本UML、重構、設計模式、整潔代碼之道,就躍躍欲試了,還真敢給你抽象公共函數了。

一開始,他覺得80%相似,20%不相似,於是在公共函數裡面簡單寫幾個if..else做個區隔就可以。沒想到,越隨著版本迭代,這些功能漸漸越變越不一樣了,但是這個代碼已經幾經人手了,而且這是一個公共函數,誰也不知道牽扯多少,所以誰也不敢大改,發現問題了就加一個if..else判斷。

沒想到啊沒想到,這個本來當初公共的函數,現在變成了系統最大的毒瘤,最復雜的地方,誰也不敢動,除非實在萬不得已,手起刀落。

所以,我平時告誡程序員,純技術的、純通用的,你們可以嘗試搞搞抽象公共函數,對於業務的,你們還是簡單粗暴的根據Leader們做的代碼模板代碼框架,乖乖的復制、修改、填肉吧。

你們啊,先從做模板做代碼片段開始吧,咱們放到咱們內部代碼片段開源庫里,看誰的代碼片段被別人復制的多,說明你的代碼抽象設計能力越好了。那時候,我就大膽放心讓你撒丫子跑了。在沒有學會跑之前,給老子乖乖的復制、修改、填肉吧。

『伍』 為什麼編程人員每天編寫的代碼行數很少

編程人員每天編寫的代碼行數很少,說明編程人員編程能力不夠好,編程技術水平不行。

『陸』 普通程序員代碼量一般要達到多少才會產生「質變」

熟能生巧,這話小孩子都懂的道理,恐怕長大的我們未必懂得。

只有老老實實的寫代碼,才能有所進步,有所突破,有所提升。如果,每天看著視頻,不動手寫代碼,量達不到,還是手生,沒有代碼的感覺。寫代碼也是一項技術活,技術活靠的就是扎實嚴格規范的訓練,才能有所成就。所以,代碼的功力是寫出來的,不是看出來的,保證每天都有代碼量的產出,只有不斷的積累,不斷的打磨自己的技術,才能讓自己脫穎而出,才能讓自己更有競爭力。

『柒』 為什麼國內程序員都很少進行代碼重構

說到代碼的重構對於國外的程序員提到的比較多,特別是大型的開源工程,基本上一個模塊或者函數的實現會反復的修改,一個文件能被修改成千上萬次,曾經訂閱了linux內核組的郵件,每天的收到的修改文件成千上萬,有時候一個文件都能被修改上百次,對於文件修改最瘋狂的是google的chrome源碼,重構的次數,讓你覺得每天都在重寫但是功能上感覺越來越流暢。為什麼我們周圍的程序員絕大部分時間做的不是這樣的事情。

為啥從直覺上覺得老外的寫的代買質量比我們的要高,我們國內的程序員絕大部分的時間是在趕進度,准確的來講忙著增加功能和修改bug,其實也從側面反映出為什麼國內出不了android以及Linux等影響深遠的 科技 創新,從全球開源代碼的佔比就可以看出,差距還是很巨大的。

為什麼覺得老外寫的代碼比我們的強?

1.國內軟體發展主要階段還在解決有沒有,還遠談不上強大
中國的軟體經過近幾十年長足的發展,已經取得了巨大的成就,特別在互聯網行業已經有幾個巨頭躋身世界前列了,最近炒的很熱的臉書的用戶數據泄密事件,作為當事人扎克伯格,也在論述中提到中國有幾個很厲害的互聯網公司,這說明中國在互聯網領域還是取得了相當大的成就,但是在一些核心的領域,或者門檻很高的領域差別還是非常巨大。

任何事情在發展的初級階段首要考慮的是不是有沒有,所以如同創業初期的公司會選擇短時間內搞出來個產品,哪怕是不成熟的產品,然後快速的投入市場,根據市場用戶的反應同步追蹤問題,等到產品差不多穩定,並且產品在市場上有了一席之地之後,後續的事情就要考慮優化功能,對裡面的代碼或者產品的性能進行全方面的提升,目前國內大部分的互聯網一般比較年輕,還在解決有沒有的問題,相信隨著時間的推移以及國內軟體的發展,也會有大量的高質量的開源框架代碼出來,但這一切都需要很長的時間。

所以國內的程序員大部分時間都是在趕進度和根據需求完成功能代碼。

2.軟體產業的底子還很薄弱, 歷史 積淀還不夠
舉個很典型的例子,現在很多國內的程序員到了30多歲就開始考慮後續的轉型了,因為後面的輕輕人會帶來很大的沖擊,所以大部分的30多歲的程序員都在考慮自己後路,都要考慮轉型的問題。老的有經驗的程序員反而轉型去做管理或者合夥創業了,哪有幾個還在安心搞技術,年齡大了還在搞技術的還被人鄙視,覺得自己沒有出息。

但是在國外寫代碼是一種很常見的職業,和別的工種沒有多大的差異,40,50歲了寫代碼也是比比皆是,做軟體是一種技術工種,經驗的佔比是很高的,所以老程序員寫出來的代碼更加有深度,穩定性更高,一切的根源還是產業的發展不夠成熟,需要時間和 歷史 的積淀,從這方面講國內的軟體整體產業還是比較薄弱,從業人員的整體素質和工作氛圍還有待慢慢的成熟,周圍都是有經驗的程序員在帶領著如何去重構代碼,如何提升代碼的質量,而國內大部分的程序要還是被產品經理鞭策著增加需求和修改代碼。

3.公司的文化差異
目前很多的中國技術公司更多的追求的是短期利益的最大化,在基礎軟體的投入遠遠不夠,畢竟基礎的投入很難短期見成效,在一個具體的場景,有一個產品主體的功能已經實現了,也能在用戶那邊投入使用了,一般的公司很難拿出時間來,讓你做代碼的重構,畢竟這種事情很難直接產生經濟效益。這與公司本身的文化差異有很大的關系,重視的技術或者懂得技術的公司對於這方面相對比較重視,反之就差很多。

小時候課本上就說著我們落後100年,所以高樓大廈不是一天建成的,所以在追趕的道路很漫長,所以承認存在差距,然後努力加倍的去追趕。

Time is money. 以目前國內互聯網的情況,需求應接不暇,程序員基本上都是被需求與業務趕著走,時間非常緊張,在這種情況下,程序員很多時候唯一的選擇就是趕緊實現需求的功能。所以,一個項目下來,代碼基本上都變得非常非常的「垃圾」。

也有很多程序員想過在項目結尾的時候進行代碼的重構,基本上每個程序員也都知道重構代碼的好處,但是並不代表著真正能做起來。還是那個原因,國內互聯網的速度太快,需求應接不暇,做為程序員,基本上沒有時間來做這件事情。

而另外一個原因是跟團隊負責人有關。若團隊負責人能夠意識到重構的好處,那麼他可以為此單獨劃分一段開發時間出來,讓大家分別負責一個模塊進行重構,這都是可以安排做起來的。這也需要團隊負責人如何在需求人員的需求與代碼質量的進度上做一個平衡,進行統籌安排。

最後我想說一個可能很少意識到的原因,那就是人員流動問題。國內互聯網目前人員流動非常的大,尤其是北上深這樣的互聯網發達的城市,基本上是平均兩年就會走一大波人,在這樣的情況下,也會考驗從業人員的職業道德,即我到底要把代碼寫的多好,要把代碼的可維護性做到多好,其實這都是從業人員自身需要考驗的問題,因為完成一個功能很容易,但是要考慮的全面就是另外一回事了。而人員流動帶來的另一個問題就是有一些代碼是很難看懂的,即有些代碼在人員離開後成為了「 歷史 」,無人敢動。這也會阻礙著軟體的重構工作的進行。

從我所講的這幾種情況來看,重構其實是大家都能知道的好處,但是真正實施起來卻又有現實的約束,需要負責人來做這樣的統籌安排與推動。

成本太大
大多數軟體產品的開發都是經過了很多開發人員的付出,如果進行代碼重構需要了解產品、了解框架、了解代碼邏輯,這個過程會花費大量的時間和人力成本,對於企業來說,效益是第一位的,與其花費精力進行效益不大的產品重構,不如去承接更多的項目來的實在。
領導決策
由於大部分企業的老闆都是非技術人員出身,他們更關注效益和客戶,為了符合企業的發展,在進行產品開發時會更多的採用新技術來吸引客戶,花費精力重構代碼不如開發一套新產品或者開發更酷炫的效果更具有實在意義。
代碼規范不足
由於國內互聯網較之國外起步較晚,很多企業發展時間較短,加之人員流動比較大等多方面的因素,很難形成標准、嚴謹、行之有效的代碼規范,所以很多技術人員在開發時都是根據個人風格習慣在開發,等其他人接手代碼時,缺少相關標准和文檔,很難理解代碼邏輯,花時間去了解代碼、重構代碼不如直接推翻重做來的方便。
客戶定製化需求
部分企業創業初期對企業信息化是不夠重視的,只有企業發展到一定程度才會考慮信息化建設,而由於業務的限制,大多數標准化的互聯網產品都很難滿足企業的實際需求,需要進行大量定製化的開發,對於互聯網企業來說,即使產品開發足夠完善,在實際項目中也需要進行擴展,倒不如直接在項目中進行調整。
程序員的發展限定
在國內很少有終身的程序員,大部分都會逐漸轉向銷售、售前、項目經理、產品經理等崗位,而這些崗位則需要了解業務、了解客戶,對技術的需求反而不會太高,所以與其花時間去專研技術不如將更多的精力用在業務和項目層面。

代碼能夠重構對底層框架要求深度掌握、且代碼框架本身要足夠靈活,而國內絕大部分技術人員都是停留在對框架的使用層面、少數可以完善、結合使用,極個別的在做同語言山寨或者換一種語言重寫,能夠對產品體系進行把握、與時俱進擴展實在是鳳毛麟角。隨著國家的經濟提升、IT行業逐漸成熟,在我國這么多IT公司基數下,即便是鳳毛麟角的概率,重視基礎框架、積累萃取、不斷迭代完善的一些技術公司也會慢慢嶄露頭角、涌現出來的。

【國內程序員很少進行代碼重構】,這個現象雖然沒有什麼調查統計,不過我寫了十多年代碼,也發現身邊的程序員大多數是這樣的,【寧可寫新的代碼,也不願意重構老代碼】。下面我也談談自己的看法:

系統沒有問題,就是最大的功勞
我見過的大部分的傳統行業的軟體公司或IT部門是這樣的(互聯網公司不太了解),「只要系統穩定,那麼就是最大的功勞」,而保持系統穩定最好的方法是什麼? 就是盡可能的不要動系統!

可能很多人不能理解,但很多公司確實是這樣,甚至公司對項目的考核標准中,項目有什麼突破的權重很低,是否有生產事故的權重很高。所以很多「機智」的項目組成員,千方百計的不接需求,或者把需求推給別的項目組。在這種單位裡面,別說重構了,新代碼都寫的不多。

測試覆蓋度太低,重構代碼沒辦法保證質量
代碼重構,很重要的一個問題:「重構後的代碼誰來保證?如果影響到原有的功能怎麼辦?」

這時候很有效的一個方法,是使用各種自動化的測試來保證重構代碼的質量。

但是,大部分公司,不管是單元測試還是其他的自動化測試,都是不健全的,甚至是沒有的。所以只要不是被逼不得已,程序員寧可重新寫一個方法,也不願意重構之前的代碼。

其他

進行代碼重構不是一件容易的事情,務必需要對需求熟悉;對代碼 歷史 變更熟悉;對代碼框架,模塊熟悉;對產品更新迭代做好風險把控,時間成本把控……

進行代碼重構需要能力非常高,責任心非常強的人進行,甚至需要一個優秀的團隊完成。

為什麼要代碼重構?理由一大堆,我認為主要有兩條,一是原代碼已不適合擴展新需求,二是原代碼已擁腫不堪,亂七八糟。

為什麼很少重構?除了上述分析外,還有其他因素,如人員流動快,原團隊原作者早已不知何去何從了。又如需求和業務繁多,完成工作開發都累得半死不活,日理萬機似的,哪有時間和心情重構?

謝謝大家。

1.國內程序員技術能力不足以進行代碼重構

大量的軟體從業人員連編程規范都不熟悉,怎麼可能做代碼重構?更多的人只會寫寫hello world,只會拷貝粘貼小段代碼,連if else這種語句都寫不清楚甚至漏掉邏輯,連面向對象的編程思想都沒有,談何重構?

2.國內程序員的溝通能力說服能力一般。

進行軟體重構,必須說服經理,讓經理相信重構會帶來軟體質量的提高和故障率的逐步降低,這樣經理才會安排人力進行重構。

3.國內軟體開發更注重bug的及時解決

國內軟體開發大量的人力被分配到解決短期的某個bug,沒人抽時間思考如何長久的徹底的解決軟體缺陷,其實解決bug不重要,找到軟體的缺陷或者性能低下的地方才重要,這些才是重構的點。國內加班加點疲於奔命式的開發,沒人考慮bug率是否長期內能夠收斂,總是先解決眼前的問題再說,處於一個永遠解決bug的死循環里。

這種工作模式是愚蠢的,不是smart的。

軟體開發,一定要動腦子,不要蠻干,這不是耕地,力氣大就耕的多。

重構代碼的目的說白了,就是讓軟體開發人員更自由。

謝謝樓主的問題,這是一個我特別想回答的問題?

為什麼?因為,第一,我是一個對代碼有潔癖的人,受不了一坨,一坨那樣的代碼。第二,我是一個踐行Clean Code 的人,給大家我主要負責的一個項目的一組數據(JAVA),總代碼量20萬行,UT coverage(單元測試代碼覆蓋率)82%,代碼重復率0.5%,代碼規則(sonar)違反(Code issue)0,甚至連最低的違反都沒有。

也正是因為我的項目在實踐Clean Code上的數據,我經常去給不同的團隊做分享,也對團隊對這個重構不太上心有一些理解。

大致以下幾個原因。

第一,也是最多的,交付壓力,大部分人都會抱怨,你看我們有這么多新功能,還有那麼多bug,根本忙不過來,哪有時間重構?

第二,重構意識不足,老闆,管理人員總是希望這個我們要有,那個我們也要實現?為什麼?因為別人有,別人有我們沒有可能會造成用戶流逝。即使有一些有見識的程序員和老闆反應這個重構問題,但是重構從來不是高優先順序的。畢竟,現在的軟體的生命周期可能很短。

第三,人員流動性大,這個是我聽過最奇葩的一個理由,我問一個來聽培訓的哥們,說你代碼寫成這樣,以後怎麼維護?這個哥們說,我也知道難維護,但我明年就跳槽了。

第四,設計上就不需要重構,曾經給一個保險公司做分享,我本人也是做金融相關產品後台的,我就問你們這樣寫代碼,可能三四年以後就非常難維護了,還是要盡快重構。他們的回答是,我們不重構,我們只重寫。什麼意思那?就是一個系統,三四年以後在寫一遍。

第五,程序員本身的問題,可能第一寫單元測試,修改命名,修改代碼結構,是一件很沒有成就感的事情,也是一個沒有多少附加值的事情。畢竟現在你去找工作,這個代碼質量方面的問題會問得很少。

第六,我見過的我不能反駁的一個回答,我的英文太差,不能很好的命名,而我也不想學英文。

第七,反正我已經實現了功能。

最後,用一句話來提醒程序員們,重構是多麼重要。

出來混遲早要還的,挖了坑遲早要填的。

在國內,【重構】這件事是程序員最喜歡做的事,而不是公司喜歡做的事。

但程序員喜歡並不能影響公司的決策,所以,國內的現象就是軟體系統很少有重構。

其根本的原因在於,國內的公司所推出的系統大多沒有重構的價值。

1、國內的互聯網公司存在這樣一種快節奏,那就是發現一個有價值的創意,就馬上進入開發,開發完成立即上線,並立馬推廣使用。這是一種快速試錯的模式,一旦發現系統在 社會 中沒有引起反響,那就馬上把系統再下線。這種情況下的系統哪來的重構價值呢?

2、即使一個系統上線成功了,也積累了大量的用戶,貌似為了系統的穩定性和性能,可以有重構的機會。但事實上不是,國內公司仍舊不會選擇重構,因為重構帶不來新的價值。所以,公司多數都會在系統上添加新的功能來吸引新的客戶,而不會考慮重構現有系統。

總得來說,引起重構的原因在於能夠有持續的價值。沒有價值的事,企業當然不會做,僅是程序員的一廂情願而已。

你只是見到了你所在的公司現象,不代表所有,也不能代表大部分的。

代碼重構還是存在的現象

代碼設計爛,經常出問題、擴展麻煩、維護心累、數據混亂、結果不清醒、模塊劃分混亂

就可能要考慮到重構了

呵呵,

老大說:

你趕緊去修復一下這個bug,

還有幾個功能沒有實現,加班搞一下,

pm 說:

這個功能改一下,

還有這個,界面重新調整一下,

這個業務流,現在不一樣了,

客戶需求需要多幾個功能,

老闆說:

這東西下周能出來嗎?

『捌』 普通程序員代碼量一般要達到多少才會產生「質變」

有人說程序員的代碼達到1萬行就可以質變。也有人說每天至少100行代碼堅持1年才可以。

這些說法只是部分人整理出來適用他們自己的方法。

由量變轉化成質變,量大肯定能實現質變,但是更多的時候,質變應該是和一個人的思考相關的。做任何一項工作,如果真正的動腦了,OK ,及時沒有量,也是可以發生質變的。

『玖』 程序員真的一年可以碼3萬行代碼嗎

您好:
隨著工作年限的增長,代碼量會逐年下降。
相對的代碼質量會提高。
如果按照總量計算,三萬代碼不多,畢竟單獨的大括弧也要算一行的。。。

『拾』 程序員用C++寫了兩年了,公司項目不算多,代碼量一般,想快速提升自己。

Effective C++, More Effective C++, 代碼大全,設計模式解析,個人認為是比較有用的。

閱讀全文

與程序員升級代碼編寫量下降相關的資料

熱點內容
征途命令 瀏覽:694
搶版電影啥意思 瀏覽:180
xp編程器軟體 瀏覽:397
matlab細菌覓食演算法 瀏覽:784
手機怎麼建壓縮包 瀏覽:941
大象裡面的文件夾怎麼打開 瀏覽:954
安卓微信為什麼發不了照片 瀏覽:349
補辦綠本解壓違法嗎 瀏覽:604
gccwindows命令 瀏覽:535
日本性電影 瀏覽:331
都市主角推到母親姐姐姨媽的長篇小說 瀏覽:917
免費不用下載網站 瀏覽:893
可以播放的歐美男男電影 瀏覽:949
ldx218舵機用單片機控制 瀏覽:898
河南dns伺服器地址大全 瀏覽:775
中字四級片 瀏覽:769
青島本地伺服器地址 瀏覽:987
白鹿原小說免費閱讀 瀏覽:356
女主姓簡的小說 瀏覽:210
提示命令符框 瀏覽:354