軟件開發,最後終歸要編寫程序代碼來實現。算法
程序語言,即計算機語言,與天然語言的語種同樣,也是五花八門,就我本身用過的語言就有:彙編、BASIC、FORTRAN、VB、C、C++、C#、PASCAL、PHP、JAVA、PYTHON、R等,還有腳本語言如:JavaScript/jQuery、HTML、XML、JSON、Shell、EL、SQL等。還有一些不曾使用但稍稍瞭解的語言,如ADA、COBOL、EPL、Erlang、F#、Go、LISP...等等,不一而足。編程
只要有配套的解釋器或編譯器,就能夠有一種計算機語言。實際上,經過語法分析、詞法分析,結合編譯原理,就能夠本身設計語言。多線程
選擇何種計算機語言,在整體設計時須要考慮,與軟件依賴的軟硬件環境有關,也與須要實現的需求有關,再結合計算機語言對開發實現帶來的便利性。架構
在C++時代,不一樣的編譯器有本身的類庫,如Turbo C++、Borland C++、C++ Builder、Visual C++、GCC等,一旦選擇,更換的成本很是高。併發
C++做爲OOP的主力語言,高性能是優勢,但內存管理給開發人員帶來很大挑戰,所以GC機制的引入,使得不少應用放棄了C++,而使用C#或Java。框架
Python近年來,持續火熱,一方面因其支持函數式編程,另外一方面與其支持大量機器學習算法包有很大關係。但因爲其GIL,很難作到真正的多線程,併發能力是瓶頸。機器學習
在Windows平臺,VC++和C#.Net是主流的選擇;在Linux平臺,主流選擇是Java。其它如C、Python、PHP、Node.js等視需求選擇。函數式編程
Java做爲跨平臺語言,是現在B/S架構的主流語言,框架從早期的SSM到現在的SpringBoot,插件也很是豐富。所以,若有機會,就應儘可能瞭解、熟悉和使用Java語言。函數
程序代碼不只輸入給編譯器或解析器,同時也是呈現給開發人員的。計算機語言,是表達思想的一種方式,這就須要開發人員有良好的表達能力。這個表達能力,不只是符合計算機語言的語法和業務的邏輯結構,還應遵循約定的編程規範,從而使得開發團隊成員閱讀代碼變得輕鬆,提升團隊成員流動的便利性,下降代碼的維護成本。工具
編程規範通常涉及以下部分:
編程規範的執行狀況,能夠結合工具檢查和人工代碼審查來實行。工具如CodeStyle,Pylint等。
在代碼開發以前,先肯定接口,包括入參和出參,接口代碼能夠先不實現,用固定的值返回(即所謂的假接口)。
如Java開發,可使用Swagger或YApi來開發接口,結合Mock構造數據,而後就能夠部署,調試接口。
接口先行,好處多多。能夠很容易發現參數是否缺失,數據類型是否合理等等,甚至能夠檢測出接口是否須要增長等狀況。
因爲代碼還沒有實際開發,全部調整的代價都是很低的;一旦代碼已經編程實現,調整起來容易傷筋動骨。
Java開發,使用JUnit,實現單元測試,是提升代碼質量的有效手段。
固然,單元測試的有效性,更重要的是測試用例的有效性;但使用單元測試框架,能夠大大提升迴歸測試的效率。且單元測試能夠單獨部署,也便於測試驗證。
所以,應儘可能使用單元測試框架。
Jenkins使得代碼的持續構建成爲現實。
代碼持續構建,方便獲取可驗證程序軟件,便於及早發現問題,對於提升團隊開發效率,幫助很大。固然,還須要與配置管理結合起來。
責任人:開發項目組長。
執行人:開發人員(軟件工程師)。
關鍵行爲:編碼實現和自測。
輸入:
輸出:
職責要求: