關於開發效率的一點見解

2021-09-21 03:11:51 字數 3963 閱讀 4331

軟體開發專案總是不段的延期,延期,再延期……當然,有專案經理的問題,也許還有客戶的問題……作為最直接的開發人員,還是應該先檢查下自己的問題,想想咋個提高下效率呢?

1. 程式設計師的工作重點是編碼麼?不,是思考。

programmer經常也被稱作coder,編碼是程式設計師花時間最多的工作之一,但要說要工作重點,似乎應該是——思考。每個程式設計師都不是編碼機器,除了編碼之外,還需要要思考:這段**是要幹什麼,需要哪些輸入,需要進行什麼樣的驗證,要經過什麼樣的計算流程,最終需要輸出什麼,以及,哪些地方可能出現錯誤,而這些錯誤又該如何去處理……甚至,有時候還需要考慮用什麼樣的技術手段更為合適。

是的,這不是乙個coder的工作,但是,programmer的確不是coder,中國沒有純粹的coder。有人說程式設計師就是乙個翻譯工作者,這不假。程式設計師所做的事情就是把乙個思維中的、抽象的東西,翻譯成**,然後經過編譯器/直譯器的再次翻譯和作業系統的組織,讓cpu搞明白,照樣執行。

所以,不要因為任何原因放棄慎密的思考。多數情況下,程式設計師會為了趕時間一邊寫**一邊思考,但這種思考往往沒有經過慎密的邏輯推敲,最終造成**一而再,再而三的被修改、打補丁……當補丁多到一定程度的時候,**堆難免會坍塌,即使沒有,也常常是搖搖欲墜了。不知道每當這個時候,看到連自己都不想再改動的**是種什麼樣的心情,會不會後悔沒有在開始編碼之前好好的思考呢?

2. 拆除補丁,學會重構。

見過滿是補丁、補丁挨補丁、補丁重補丁的衣服麼?很舒服很溫暖麼?那是文學家說的。如果誰穿過,那他一定知道,這不舒服。如果想舒服,當補丁多到一定程度的時候,就應該把這些補丁拆下來,換一塊完整的大補丁。

同樣,要想程式跑得愉快,少出現錯誤,也絕不是持續地修改錯誤就能實現的。修正錯誤的過程,需要不斷的重構。相信多數程式設計師都有這種感覺——補丁加補丁的程式遇到新的錯誤時總是讓人覺得難以下手,而對於新接手的程式設計師來說,改這樣的**,還不如重新寫乙個更容易些。表面上看起來,重構的時間會比直接修改錯誤的時間花得更多一些,但是重構會為下一次修改做好準備,它會使下一次修改仍然處於乙個清晰明了的狀態。

除了讓程式結構保持清晰,重構還有乙個好處是會促使程式設計師去思考。修正錯誤時的思考仍然處於乙個非常重要的地位。如果在修正錯誤的時候只看到了眼前的錯誤,那很危險,因為你不知道你所做的事情,到底是改正錯誤,還是隱藏錯誤。所以改錯之前,必須思考,必須對錯誤反覆慎密地邏輯推敲,必要的時候甚至要從整體框架去探尋錯誤的原因。

3. 程式需要練習打字麼?當然!

你見過像小學生一樣一筆一劃寫字的作家麼?也許有,但至少我沒見過。寫作的時候,文字應該緊隨思想的步伐,如行雲流水般地湧現出來,只有這樣,思維才不會被文字阻礙,一時閃現的靈感才不會被白白的放走。同樣,如果寫**的速度跟不上思維,那思維就會經常斷線

程式設計師不是打字員,不需要專業的打字速度,但是打字的確是一項基本技能,它是保證思維流暢的基本條件之一。是的,只是之一,因為打字的速度永遠跟不上思維的速度,我們還需要別的東西——工具,這是後面要說的內容。那麼,如果打字速度不夠快,寫程式之餘不妨玩玩打字遊戲……或者聊聊qq。

4. 每個人都會用工具,但是真的用好了嗎?

對於程式設計師來說,最常用的工具就是ide。不過ide可以用來做什麼呢?編寫**和編譯除錯,這些只是它的基本功能而已。對於編碼來說,乙個好的editor可以大大的提高編寫**的效率。當然,乙個好的ide裡面一定少不了乙個好的editor,但除了ide之外,好的editor也為數不少。

什麼樣的editor最好,沒有定論,只能說,沒有最好的,只有最合適的。對於編碼來說,乙個好的editor應該有些什麼樣的功能呢?如果你想**清晰可讀,那麼這個editor最好能有語法高亮功能;如果有**摺疊功能就更好啦;如果editor有高亮當前行的功能,就不用滿世界去找插入點在**;如果有智慧型縮排格式化**的功能,那[space key]會非常感謝它的;如果有矩形選區功能,在某些需要批量修改**的時候就不需要不斷的上下左右了……還有乙個非常重要的功能,那就是自動完成。打字速度還跟不上思維麼?那自動完成可以很好的幫助你提高錄入速度——當然前提是熟練掌握對editor自動完成功能的使用,這通常得益於設定乙個方便的快捷鍵。

說到快捷鍵,它是乙個幾乎每個editor都有的功能,卻常常會被會忽略。拷貝貼上要用滑鼠點選單麼?自動完成要等待200ms時間彈出麼?選擇單詞是用滑鼠拖選、雙擊還是shift+方向鍵呢?移動到某個位置是不是要按方向鍵按到手痛……?為什麼不試試快捷鍵?!幾乎每個editor都定義了一套方便快捷的快捷鍵,用於快速處理編輯指令,有些editor甚至考慮到使用者習慣為使用者提供了自定義快捷鍵的功能。ctrl+x、ctrl+c、ctrl+v這套剪貼簿快捷鍵在windows下幾乎每個軟體都是同樣的定義;移動游標除了上下左右及home、end外,不妨嘗試一下ctrl+這些鍵;多數情況下,如果在移動游標的時候按住shift,那游標經過的文字就會被選中……當然,快捷鍵遠不止這些,當你覺得某項操作不方便或者太花時間的時候,你就應該去軟體的help裡面找找關於這個功能的快捷鍵定義了。多用用,熟悉了,效率就上去了。

ide、editor都是開發所必須的工具,但它們不是開發工具的全部。word、excel除了用於辦公,也可以用於一些**和資料的臨時整理,因為它們是專業的文書處理工具和資料處理工具。當然,好用的工具遠不止這些,當你發現了,留個意,說不定哪天就能頓悟——這東西能幫助我處理**。除了工具之外,還有技術,使用工具當然是技術活,再好的工具不會用也是白搭。順便提一下,正規表示式這個東西,在查詢替換的時候真不錯,雖然學習起來需要花點成本,但它值得。

5. 寫程式的時候可以用中文麼?為什麼不!

如果你的公司規定了程式必須用英文來寫,那這一部分你可以跳過。其實不論英文還是中文,都是用於表達意思的符號。系統早就unicode了,資料庫幾乎都支援各種字符集,多數語言都支援中文變數名……在程式中使用中文,早已不存在環境的限制。

程式設計師們都知道變數名、方法名要有意義。寫英文麼?英文畢竟不是本土語言。你知道正確的單詞該如何寫麼?就算知道,想這個英文名字往往也會想破頭。一段10行的**就花了10分鐘去糾結變數名,**還能有效率?寫注釋就更不用說了,有時間去想一段英文注釋怎麼寫,中文注釋都寫了好幾段了。所以,如果想用中文,就用吧。哦——前提是,確定你的程式中使用中文不會有問題,並且,你打漢字的速度真的比較快。

6. 今天你熬夜了麼?熬夜不是好習慣,但我確實熬夜了。

熬夜的程式設計師一定不是少數,加班的程式設計師更不可能少。那麼熬夜和加班能有效提高效率麼?短期內,也許會。但是長此以往,失去的不僅有效率,還有健康

作為腦力勞動者,大腦是最需要保護的部分。保護大腦的最好方式,除了合適的溫度和濕度之外,還有很重要的一點,就是休息。而且,大腦「不是乙個人在戰鬥」,它需要身體其它各部分提供各種各樣的服務,所以足量的休息和充分按時的睡眠是必不可少的。

看過《人體使用手冊》嗎?這是一本很火的關於健康的書。這本書就提到了為什麼人們需要在10點左右進入睡眠狀態。如果長期熬夜,就不能讓血液得到充足的補充,就不能讓身體得到充分的修復。人生不像wow,不是一瓶紅藥水就能解決問題的,人需要營養和休息來保證大腦及身體其它部分的健康。健康的大腦才會思維敏捷,響應迅速。思維敏捷的大腦才能提高工作效率,而遲鈍的大腦只會讓程式出現更多的錯誤。

不過,不熬夜不行啊,要不然我為什麼會在這個時候仍然在寫部落格呢?原因很多的,比如夜深人靜才能靜心思考;又比如,白天太忙,晚上才有時間跟朋友們同行們交流;再比如,一到白天就想睡覺,只要晚上才會精神煥發……

如果需要安靜的環境,其實22點睡覺5點起床和1點睡覺8點起床有同樣多睡眠時間和環境安靜的時間,不過22點睡覺你可以得到很好的休息和修復,但1點睡覺你就錯過了造血的**時間。也許你的朋友們會在22點到1點這段時間找你討論一些問題,那你為什麼不勸勸大家都22點睡覺,早晨5點再起床精力充沛的討論呢?至於黑白顛倒的朋友們,建議你們花些時間好好調整,因為這已經是健康在報警了。

至於我為什麼現在還不睡覺……我不是在寫這篇部落格希望大家都早一點睡覺麼?人多力量大,大家一起來倒倒時差吧!

關於開發效率的一點見解

軟體開發專案總是不段的延期,延期,再延期 當然,有專案經理的問題,也許還有客戶的問題 作為最直接的開發人員,還是應該先檢查下自己的問題,想想咋個提高下效率呢?1.程式設計師的工作重點是編碼麼?不,是思考。programmer經常也被稱作coder,編碼是程式設計師花時間最多的工作之一,但要說要工作重...

關於開發效率的一點見解

軟體開發專案總是不段的延期,延期,再延期 當然,有專案經理的問題,也許還有客戶的問題 作為最直接的開發人員,還是應該先檢查下自己的問題,想想咋個提高下效率呢?1.程式設計師的工作重點是編碼麼?不,是思考。programmer經常也被稱作coder,編碼是程式設計師花時間最多的工作之一,但要說要工作重...

關於 last child的一點見解

今天在公司的總結中有個同事提了乙個很有意思的 是關於p last child的問題 原始碼是這樣的 想要的效果是這樣的 行一行二 行三行1 行二行三 行一行二 行三行內1 行一行二 行三行內1 這裡最後乙個p元素沒有發生顏色變化,原因是 last child 注意這裡是緊挨元素的,而不是有空格隔開的...