软件开发,最后终归要编写程序代码来实现。算法
程序语言,即计算机语言,与天然语言的语种同样,也是五花八门,就我本身用过的语言就有:汇编、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使得代码的持续构建成为现实。
代码持续构建,方便获取可验证程序软件,便于及早发现问题,对于提升团队开发效率,帮助很大。固然,还须要与配置管理结合起来。
责任人:开发项目组长。
执行人:开发人员(软件工程师)。
关键行为:编码实现和自测。
输入:
输出:
职责要求: