有哪些老鳥程式設計師知道而新手不知道的小技巧?自我感受

2022-02-03 17:17:18 字數 4493 閱讀 6035

最近在朋友圈看到別人分享的一篇知乎回答:

我覺得寫得挺有道理的,作為乙個寫了10多年c#**的老程式設計師來說,很多地方我能感同身受,所以也談談我的自我感受。

1.重構是程式設計師的主力技能。

是的,我之前經常也提到一點,就是好多設計模式不是提前就設計出來的,而是重構出來的。很多情況是我們在做設計的時候考慮不到的,是寫**時也考慮不到的,只有在專案上線後,客戶使用過程中才會反應出來,這個時候就需要對專案進行擴充套件,版本公升級,這時就體現老程式設計師實力的時候了,就是根據已有的情形,結合新的客戶需求,使用合適的設計模式,使得**能夠優雅的擴充套件。

2.工作日誌能提公升腦容量。

這個我沒有什麼體會,我平時也寫工作日誌,但是那是專案工作的需要,不是我本人的主觀意願。不過我個人覺得技術部落格能夠提公升腦容量才是真的。很多專案中遇到的問題,解決了,也許以後還會再次遇到,也許別人也會遇到,那麼就寫成部落格,自我總結,方便以後自己或者其他程式設計師遇到同樣的問題。

3.先用profiler調查,才有臉談優化。

是的,我之前也專門做過sql server的效能優化,很有體會,profiler是第一步。如果做.net**的優化,也有對應的profiler工具,這個可以幫我們快速的定位瓶頸在**。找到了瓶頸才有接下來的優化工作。

4.注釋貴精不貴多。杜絕大姨媽般的「例注」。漫山遍野的碎碎念注釋,實際就是背景噪音。

我不是很同意這個說法,還有更極端的觀點是不需要注釋,命名就是注釋,好的命名就能注釋一切。我覺得好的命名那是必須的,但是在複雜的邏輯中,我們有必要在**中注釋我們的思路,為什麼會用這樣一種寫法。

5.普通程式設計師+google=超級程式設計師。

確實,很多不懂的,解決不了的就google吧,一般google會告訴你,stackoverflow知道答案。

6.單元測試總是合算的。

這個觀點我贊同,也許對於很多程式設計師來說,單元測試就是浪費時間,但是當專案複雜了以後,真的很需要單元測試,尤其是在不斷的hotfix和版本公升級的過程中。

7.不要先寫框架再寫實現。最好反過來,從原型中提煉框架。

這個就是我前面第一點提到的一樣,很多框架設計好了,但是不一定適應當前這個專案,那就是畫蛇添足。

8.**結構清晰,其它問題都不算事兒。

這個就是編碼規範的問題,**寫的漂亮,讓debug沒那麼痛苦,讓別人review你的**也沒那麼痛苦。

9.好的專案作風硬派,一鍵測試,一鍵發布,一鍵部署; 爛的專案生性猥瑣,口口相傳,不立文字,神神秘秘。

這個也是我最近在研究的ci(持續整合),適應teamcity可以把測試,發布,部署都自動化搞定。

10.編碼不要畏懼變化,要擁抱變化。

基於介面的程式設計,我們只關注介面,實現嘛,隨時可以變。

11.常充電。程式設計師只有一種死法:土死的。

好吧,程式設計師的命就是這樣,技術變化太快了。

12. 程式設計之事,隔離是方向,起名是關鍵,測試是主角,除錯是補充,版本控制是後悔藥。

面向介面,控制反轉與依賴注入,都是編寫複雜的軟體的必備良藥。測試,除錯,沒啥可說的,必備。版本控制,那是必須的!即使是只有乙個開發人員的專案,也需要版本控制。

13. 一行**乙個兵。形成等建制才能有效指揮。單位規模不宜過大。千人班,萬人排,容易變成萬人坑。

這裡說的乙個關於函式的規範問題,有一種說法是乙個函式的內容不應該超過7行,如果超過7行,那麼肯定是把多個function合併到乙個函式中的,應該拆分成多個函式。這個要求可能有點高,很難做到。不過上百行,上千行的函式那是不應該的,必須拆分!

14. 重構/優化/修復bug,同時只能作一件。

這個我還是有點體會的,把多個目標合併到一次修改中,那是多麼困難的事情,真的不好做。最好是分開,先重構,保證重構後的功能和原來的功能一致,然後再fix bug。

15. 簡單模組注意封裝,複雜模組注意分層。

物件導向程式設計基本要點,封裝,企業應用架構的基礎就是分層。最經典的三層架構做企業應用的應該都知道。

16. 人腦效能有限,整潔勝於雜亂。讀不懂的**,嘗試整理下格式; 不好用的介面,嘗試重新封裝下。

還是說到編碼規範的問題,簡潔易懂,介面要清晰。

17. 迭代速度決定工作強度。想多快好省,簡化開發流程,加快迭代速度。

軟體工程中的快速迭代,敏捷開發,涉及到前面提到的持續整合。

18. 忘掉優化寫**,忘掉**作優化。因為過早優化,往往事倍功半; 不通過全域性性能度量,優化也難有建樹。

不是很認同,有經驗的程式設計師,在寫**時採用的就是最優的演算法,最好的查詢方式。沒有什麼忘掉優化寫**的事情,在寫**時,想到的就是最優的演算法,因為在他看來就這種演算法才是對的。

19. 最好的工具是紙筆;其次好的是markdown。

紙和筆只適用於在face 2 face的交流過程中,交流後頂多拍照留存,根本無法建立有效的知識庫,以後想到之前的討論,怎麼檢索?怎麼修改?。寫wiki才是王道,markdown只是一種寫wiki的方式罷了。

20. leader問你任務時間,你答不上來。很可能是任務拆分不夠細。細分到沒有疑問吧。

應該是的,如果不知道任務時間,那麼說明要麼你根本不懂這個任務怎麼做,完全不會,要麼就是任務太大了,不好估計時間。

21. 寧可多算一周,不可少估一天。別總因為你的「樂觀」而boss受驚嚇。

是啊。程式設計師在估計工時的時候總是太樂觀。隨便開口就是乙個小時就能搞定,半天就能做完。完全沒有想到該修改對其他模組的影響。乙個修改後的單元測試,可接受測試,uat環境測試,再到上線,很多地方都得花時間的。一旦某個測試不通過,然後又得除錯,修改,再進行單元測試,可接受測試~~~~,好吧,誰能保證每次修改都是一次通過呢。

22. 最有用的語言是english。其次的可能是python。

沒懂這裡在說什麼。

24. 資源、**應一道受版本管理。資源匹配錯誤遠比**匹配錯誤更難排查。

這個應該是這樣。在專案資料夾中,有很多個子資料夾,其中乙個資料夾叫src,那裡存放的才是**,那麼其他的資料夾呢?就可能存放相關的設計啊、測試啊、工具之類的。

25. 不要基於想象開發, 要基於原型開發。原型的價值是快速驗證想法,幫大家節省時間。

恩,是啊,最好是先畫出原型。有了原型才方便討論,明確需求。

26. 序列化首選明文文字 。諸如二進位制、混淆、加密、壓縮等等有需要時再加。

應該是吧,比如json是比較好的序列化選項。

27. 編譯器永遠比你懂微觀優化。只能向它不擅長的方向努力。

有了好的設計和演算法,誰關係編譯器內部怎麼做的。

28. 不要定過大、過遠、過細的計畫。即使定了也沒有用。

過大過遠的目標還是可以定吧,規劃一下下乙個版本的roadmap,也許還沒有開始做,但是願景可以建立。只是經常會有計畫趕不上變化的情況,所以遠期的計畫不需要太詳細,反正也會不斷變。

29. 至少半數時間將花在整合上。

這得看做什麼專案了吧,很多專案就是乙個完全獨立的孤島,沒啥好整合的。最近的基礎可能就是單點登入的整合,太簡單花不了多少時間。另外常見的是hr系統的員工資料的整合還有財務系統的財務資料整合,確實很花時間。

30. 與主流意見/方法/風格/習慣相悖時,先檢討自己最可靠。

沒啥說的。

31. 出現bug主動查,不管是不是你的。這能讓你業務能力猛漲、個人形象飆公升; 如果你的bug被別人就出來,那你會很被動~≧﹏≦

查bug是也很難的事情,自己做的專案,自己再支援運維一段時間,看看自己的**寫的有多爛,有多難修改,多難除錯。真的可以讓自己能力提公升很多。

32. 不知怎麼選技術書時就挑薄的。起碼不會太貴,且你能看完。

我很懶,很多書都看了一半就看不下去了。

33. git是最棒的。簡單,可靠,免費。

源**管理,必選git,自己可以架設git server,也可以用github。

34. 僅對「可**的非理性」拋斷言。

恩。是啊,尤其使用者輸入的時候。

35. log要寫時間與分類。並且要能重定向輸出。

這個用現成的log元件即可。有log4j,log4net,真的很好用。

36. 注釋是稍差的文件。更好的是清晰的命名。讓**講自己的故事。

前面已經說過了。

37. 造輪子是很好的鍛鍊方法。前提是你見過別的輪子。

這裡說的是程式設計師的自我修煉的過程。確實,對於乙個需求場景,我們應該先想想有沒有現成的開源專案可以用,然後再看能否把開源專案拿來改,最後自身足夠強大了,就自己做乙個輪子。

38. code review最好以小組或結對為主。因為對業務有足夠了解建議才更有價值。而且不會成為負擔。注意,提交過程中的管理員review很容易成為瓶頸。

這點我做的不好,在我這麼多年的工作中,也只有為數不多的code review meeting。

39. 提問前先做調研。節約大家的時間。

是啊,google能夠直接告訴你答案的,那就不用再問別人了。

40. 永遠別小看程式媛(╯3╰)

只要是正在的碼農,在我看來是沒有區別的。所以沒有小看或者高看的意思。

以上都是我的個人感受寫給自己,看看差距,希望以後能做的更好吧。

有哪些老鳥程式設計師知道而新手不知道的小技巧?

本來只是分享幾條看法,沒想到會有這麼多人喜歡。我再補充一些,希望能對高階中的程式朋友有幫助。手機敲得,比較凌亂。作為個人意見僅供參考。重構是程式設計師的主力技能。工作日誌能提公升腦容量。先用profiler調查,才有臉談優化。注釋貴精不貴多。杜絕大姨媽般的 例注 漫山遍野的碎碎念注釋,實際就是背景噪...

老鳥程式設計師知道而新手不知道的小技巧

1.重構是程式設計師的主力技能。2.工作日誌能提公升腦容量。3.先用profiler調查,才有臉談優化。4.注釋貴精不貴多。杜絕大姨媽般的 例注 漫山遍野的碎碎念注釋,實際就是背景噪音。5.普通程式設計師 google 超級程式設計師。6.單元測試總是合算的。7.不要先寫框架再寫實現。最好反過來,從...

有哪些新手程式設計師不知道的小技巧?

1.重構是程式設計師的主力技能。2.工作日誌能提公升腦容量。3.先用profiler調查,才有臉談優化。4.注釋貴精不貴多。杜絕大姨媽般的 例注 漫山遍野的碎碎念注釋,實際就是背景噪音。5.普通程式設計師 google 超級程式設計師。6.單元測試總是合算的。7.不要先寫框架再寫實現。最好反過來,從...