技術知識和穩定的系統之間,可能還差這些?

2022-01-29 07:25:15 字數 2385 閱讀 1872

前言:

很多人都說——程式一門藝術,對於這個說法,以前我是很難理解的,程式就是乙個工具,一門學問,怎麼會是一門藝術呢,後來工作越深入,考慮的東西越多,發現程式的確是一門藝術。什麼是藝術呢?通過捕捉與挖掘、感受與分析、整合與運用,通過感受得到的形式展示出來的階段性結果。程式不只是你寫出來,執行起來就成功了,而是需要感受和分析、需要整合運用,需要最終變成成果。顯然,程式是符合藝術的標準。

藝術的展現除了術,還需要道。程式的術是大家都能得到的共識,各種各樣提公升自己技術的文章到處都是,這裡我們說說程式的道,也就是方法。這也是大家經常忽略或者不重視的地方。

作為一名藝術工作者(哈哈,自己也笑了。),工作中的確有太多需要注意的地方,特別是工作方法,這個東西在開發中一般是很少有人來培訓自己,或者花時間來教自己,這個需要自己去學習、總結。我自己越到後面越總是這方面的學習,這裡我也來說說自己工作中自己爬過的坑以及身邊的同伴趟過的路。

1、 **規範的困難點不是制定**規範,而是執行**規範。執行**規範無外乎就兩種方式:

2、 別說注釋影響效能,浪費時間。注釋的前提是一定要能讓人看得懂,別人能看懂你的**,就能節省很多時間,不要怕注釋文字多,太長。現代的語言和編譯器,對注釋產生的效能影響完全可以忽略不計。

try

catch (exception ex)

如果測試不出這樣的問題,在生產環境絕對懵b,沒有錯誤提示、沒有寫入日誌,根本無法找到任何錯誤資訊,這個看起來很低階的錯誤,在身邊的確是有人這麼處理的,我見過好多了。

測試和開發環境有錯誤一定要將詳細的錯誤丟擲來。

生產環境有錯誤也要適當的給與提示,告知錯誤,並且日誌記錄詳細的錯誤。

2、 忽略警告資訊

現代編譯器產生錯誤是無法編譯通過的,但是警告預設是可以忽略的。如果條件允許,大家最好把警告全部處理掉,不處理就是在給自己埋坑,很有可能在後面會爆發。

我經歷過乙個的乙個事件就是.net呼叫redis的一次事故,使用的是官方推薦的驅動類庫為service.stack.redis,但是使用的時候忽略警告資訊,導致後期版本相容性的問題在生產環境爆發,幸好已經有其他人躺過坑,所以問題立馬就處理掉了。

條件允許,請解決所有的警告,如果條件有限,經常檢視警告資訊,重視新出現的警告資訊。

很多人都經歷過接手別人的**,而且程式設計師最害怕的就是閱讀別人的**。不管是別人的**還是自己的**,都要習慣性去重構,**這門藝術不是一蹴而就的,是需要慢慢雕琢出來的。如果在開發過程中,不管是自己的**還是別人的**,發現問題,一定要去解決這些髒東西。**是積累的過程,不合適的**應該在初期就優化掉,如果越積越多,到最後只有可能是「沒時間優化」和「不敢優化」。

在重構的過程中,總是會有很多理由讓自己放棄這一操作,最多的兩個理由就是:「沒時間」和「風險太大」,持續衍生下下去,最後唯一的結果就是系統重新開發。這就是很多公司業務只是停滯不前或者穩步提公升的,但是系統使用不到2年就要重做的原因。

工作是永遠做不完的,但是專案必須定義deadline,即使在沒有明確考核的情況下,自己也需要給自己定義deadline,乙個專案耗的太久,會讓專案的弱勢越來越嚴重,會讓成本越來越高,會讓開發人員的編碼效率低下,所有的開發任務一定要定義deadline。

定義deadline還有乙個好處,就是能有成果展現,這個對於企業來說,是非常重要的。技術、知識、能力一定要變現成成果,即使是做技術研究,也需要有成果的展示,而不能一直處理進行中的狀態,這種意識是非常重要的。

一定要寫測試用例。測試用例絕對不會浪費你的時間,測試用例覺得不會拖慢專案的進度,而且能加快專案的進度,進度不是開發完了,就完成,你要協助測試,保證專案上線。專案的進度才是真正的進度。測試用例實施起來困難的地方就是無法堅持下來。即使,自己對自己寫出來的**負責,即使公司沒有要求,自己也要習慣寫測試用例。大家可以看看那些好的開源**,都是會有自己編寫的測試用例的。

現在的開發方式都傾向於敏捷開發,敏捷開發的優勢這裡就不多說了,但是敏捷開發有乙個特點就是高頻率的發布,所以**應該是需要隨時都處於能被發布的狀態,其實這並不是很難,只要合理的使用cvs工具即可。

作為公司**的貢獻者,不管你是總監、經理、架構還是程式設計師,不要認為自己的**是別人不能修改,**應該是共享的,只要在公司授權的範圍內,我們應該是可以互相修改別人的模組。

在**面前人人平等,誰寫的**都會有問題,有重構的空間,不能因為你的職位高或者經驗足,就不讓別人碰你的**。

當然,有的人可能會改壞你的**,但是這個可以通過溝通解決這個問題。

有時,我們過多的關注了技術知識體系本身,卻忽略了把自己的技術知識更好的運用到工作中,運用到自己的系統中,因為這些東西除了學習相關的技能,更多的是需要自己總結,隨時趟過的坑越多,可能總結的東西越多,羅馬不是一天建造的,系統也是不是一次就完美的,我們自己的知識體系也需要時間去積累。

如何學習和掌握一項技術知識

問題 在工作和學習中,花了很長時間和心思學習了一項技術知識,由於只是學習了理論知識,現實並沒有提供實踐的機會,工作中也並不是有機會用到,一段時間過後好像自己什麼都沒有學過一樣?有時候像更深入學習該項技術的時候,有發現自己忘了以前學習的基礎知識,又得重頭看,學習。這樣反覆技術知識的增長相當慢?不知道大...

前端的一些技術知識點

文字框id focus cursor pointer canvas.onmousedown function e else if e.button 2 onselectstart return false ndragstart return false 父容器 overflow hidden hei...

Kafka技術知識總結之五 Kafka的高可用性

接上篇 kafka技術知識總結之四 kafka 再均衡 kafka 實現高可用性的方式是進行 replication。對於 kafka,如果沒有提供高可用性機制,一旦乙個或多個 broker 宕機,則宕機期間其上所有 partition 都無法繼續提供服務。若該 broker永遠不能再恢復,那麼所有...