我從 1999 年就開始了編程生涯,到今年已經有 20 多年了,我先是從 Basic 開始,很快轉到了 Pascal 和 C 語言,然后又學習了面向物件編程語言 Delphi 和 C++,2006 年,我開始使用 Java,2011 年開始使用 JavaScript,我參與過各個行業的軟體開發,從機器人、金融科技、醫療到媒體和通信,我還擔任過研究員、CTO、TPM(技術產品經理)、老師、系統架構師和技術負責人,但不管怎樣,我一直都在編程,
在我參與過的專案當中,有些為數百萬人提供服務,有些在發布之前就宣告失敗,我做過咨詢顧問,還創辦過自己的公司,我在開源專案、閉源專案和內部開源專案上花了很多時間,從微控制器到移動應用、桌面應用,再到云服務和無服務器架構,
我把過去 20 年積累的一些最為重要的編程原則總結如下,
-
不要糾結于開發工具——不管是庫、編程語言還是平臺,盡可能使用原生的構件,不要歪曲技術,也不要歪曲了問題本身,為要解決的問題選擇合適的工具,否則你要為你所選擇的工具重新安排你的作業,
-
你寫的代碼不是給機器看的,而是給你的同事和未來的你看的(除非你寫的是一次性代碼或匯編代碼),寫代碼的時候要考慮一下初級開發者,他們會把你的代碼作為參考,
-
優秀的軟體是協作開發的結果,高效溝通,進行開放式的協作,信任他人,并讓他人也信任你,尊重他人勝過尊重代碼,以身作則,把你的追隨者變成領導者,
-
分而治之,為分離的關注點開發單獨的低耦合模塊,進行單獨的模塊測驗和集成測驗,盡可能按照實際情況測驗,同時也要測驗到各種邊界情況,
-
不要把自己與代碼捆綁在一起,要想辦法讓其他人也能修改你的代碼或者添加新的功能,這樣你才能更容易脫身去參與其他專案,或者去其他公司,不要捆綁自己,否則你很難成長,
-
安全性是分層的,每一層需要進行單獨的評估,同時又與整體相關,風險是一個業務決策,與脆弱性和概率有直接的關系,每一個產品或組織都有不同的風險偏好(為了獲得更大的收益,他們愿意承擔風險),通常這三個關注點之間存在相互沖突:用戶體驗、安全性和性能,
-
要意識到每一行代碼都有其生命周期,它們最終都會死掉,有時候,一些代碼會在發布之前就死掉,所以要學會放手,代碼可以分為三種:一種是核心代碼,就像汽車的引擎,沒有了它,產品就毫無意義;一種是必要的代碼,就像是汽車的備胎,平時用得少,但一旦需要,它決定了系統的成敗;一種是增值的代碼,就像汽車的杯托,如果有那是再好不過,但如果沒有也不會影響產品,
-
不要把你的個人標識融入到代碼里,人和代碼應該是分離的,不要把其他人對代碼的評價與你自身聯系到一起,在評價他人的代碼時也要十分謹慎,
-
技術債務就像快餐一樣,偶爾欠下一點技術債務是可接受的,但如果你習慣了這樣,它會毀掉你的產品(而且是以讓你措手不及的方式),
-
在尋找解決方案時,請按照這樣的優先級進行決策:安全性 > 可用性(可訪問性和用戶體驗)> 可維護性 > 簡單性(開發者體驗)> 簡潔性(代碼量)> 性能,但不能盲目照搬,而是要根據產品的特點進行取舍,你積累的經驗越多,就越是能夠在這些因素之間做出權衡,例如,在設計游戲引擎時,性能享有最高的優先級,但在開發銀行應用程式時,安全性則最為重要,
-
拷貝粘貼是滋生 bug 的溫床,對你所拷貝或匯入的東西加以審查,bug 一般會藏身在復雜性中,依賴項復雜沒有關系,但不能讓它存在于代碼中,
-
不要只顧著寫正常的代碼,處理例外的代碼也要好好寫,讓人們明白為什么會發生例外、如何檢測到的以及怎樣解決,對所有的系統輸入(包括用戶輸入)進行驗證:盡早失敗,并盡可能從錯誤中恢復,我們要假設用戶手里握著一把槍:你努力讓用戶輸入一些其他的東西,而不是讓他們的子彈射在你的腦門上,
-
不要使用依賴項,除非使用它們的成本比你自己寫代碼的成本低很多,因為使用依賴項要匯入、維護、處理 bug,在必要的時候還要進行重構,這些都是成本,
-
遠離“炒作驅動開發”,但你要去了解它們,做一些嘗試,
-
走出舒適區,每天都要學習,把學到的東西分享出來,如果你以大師自居,就不是在學習,接觸更多的編程語言、技術、文化,保持一顆好奇心,
-
好代碼不需要注釋,而優秀的代碼提供了良好的注釋,可以讓任何一個原先沒有參與代碼演進、試錯和需求程序的人更容易閱讀、修改它,
-
盡量避免使用多載、繼承和隱式的智能特性,使用純函式,它們更容易測驗和診斷,否則的話就使用類,實作不同功能的函式要使用不同的名字,
-
在徹底了解問題之前不要急著寫代碼,花在傾聽和了解問題上的時間通常比花在寫代碼上的時間要多,在寫代碼之前要先了解問題域,問題就像迷宮一樣,你要循序漸進,反復進行“編碼 - 測驗 - 改進”,直到把問題解決為止,
-
不要嘗試去解決不存在的問題,不要進行投機性編程,只有在確定代碼確實需要具備擴展性之后才讓代碼具備可擴展性,通常情況下,當代碼被擴展之后,你會發現問題會變得與原先認為的不一樣了,
-
大家一起開發軟體會更加有趣,建立可持續發展的社區,傾聽,激發靈感,學習,分享,
我并不是軟體開發方面的權威,但這些都是我一路走來總結出來的原則,我相信,20 年后,這些原則會發生變化,會變得更加成熟,
作者丨Alex Ewerl?f
本文來自博客園,作者:古道輕風,轉載請注明原文鏈接:https://www.cnblogs.com/88223100/p/20-coding-principles-told-by-20-year-old-programmers.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/502669.html
標籤:其他
