一、使用的编程语言,选择该语言的原因分析,编程经验(历史代码量等)
现在使用的编程语言是c++。
之所以选择c++是因为大一的时候需要选修一门编程语言课,上面有c程序设计和c++面向对象程序设计两门课,然后我觉得后者的名字比较高大上而且c++肯定比c厉害才对,不然怎么能有++。事实证明我的想法是对的,c++确实比c难学很多很多,特别是对于没有编程基础的大一新生。以至于大一修完它,在后续的计算物理、数值分析课上的毅然决然选择了python。大四写完毕业论文后,我开始思考python毕竟是一门脚本语言,而c++在高级语言当中,处理运行速度是最快的,运行稳定;而且在性能和类层次结构的设计上,c++语言非常灵活,功能非常强大。c++的语法非常严谨、精确和数理化,标准定义很细致,语法思路层次分明、相呼应,语法结构是显式且明确的。
在完成毕设后到现在,我接触的最多的编程语言就是c++,但是由于时间比较零碎,所以目前还没有什么项目经验,主要停留在基础的数据结构与算法、c++的初级语法上,尚未深入地学习如何开发项目。编程经验主要体现在一些程序设计课程的作业、以及leetcode的算法题上,大都比较基础,但是基本能够掌握调试、检索错误和警告、设计一般的c++程序,历史代码量预估在4000到5000行。目前我将C++作为主要的学习方向,将PYTHON作为一种辅助工具。
二、使用的集成开发环境,与同类环境的优劣比较
我现在用的集成开发环境是CLion,CLion是Jetbrains公司旗下新推出的一款专为开发C/C++所设计的跨平台IDE,它是以Java IDE IntelliJ IDEA为基础设计的,同时还包含了许多智能功能来提高开发人员的生产力,如可以智能的进行代码重构,比如改名,提取类,提取函数等。
由于之前我只在windows平台上的visual studio和基于Eclipse的Eclipse CDT Project写过c++的程序,而现在换了macOS系统,没办法只能选择新的IDE,而现在的CLion发展的也很好,越来越多的开发者选择jetbrains全家桶。作为一名学生,大三的时候我和身边的很多同学用PyCharm作为python的IDE,用户体验很好,所以最后我选择了同公司旗下的CLion,它在Mac OS上做c++开发是最合适的。和其他开发环境比较的话,Visual Studio是Windows下的最佳选择,而Eclipse CDT相对来说bug比较多,调试也比较麻烦,二者在补全、重构功能上比不过CLion;在编辑功能上,特别是代码提示和搜索功能和JetBrains的产品差一个数量级。CLion具有非常好的智能感知功能,自动折叠、高亮、自动补全、类型推断都很好;调试功能很方便,可以自动解析STL容器;而且跨平台,支持CMake/gcc/clang/mingw/cygwin/gdb。但是CLion和PyCharm一样都很吃内存;而且不支持远程开发调试、没有测试框架支持;在处理大项目的时候,CLion的表现没有VS在Windows上那么出色。
三、使用的版本控制工具和平台,与集成开发环境的集成度分析,基本的操作介绍,给出代码仓库链接和用户名,给出一个具有多次提交记录的项目示例。
(1)使用的版本控制工具和平台,与集成开发环境的集成度分析,基本的操作介绍,给出代码仓库链接和用户名,给出一个具有多次提交记录的项目示例。
(2)目前所用的版本控制工具为git(https://git-scm.com),版本控制平台为码云(https://gitee.com),(与集成开发环境的集成度分析)
(3)基本的操作介绍:
git init:在一个文件目录执行该指令,会把该目录快速设置成Git的代码仓库。
git clone:从远程服务器clone工程,也会创建一个代码仓库。
git add 文件名 或者 git add . :添加文件到仓库
git commit -m “这里是注释” :将add的文件添加注释并且提交到代码仓库
git rm ReadMe.txt(文件名) :删除文件
git stash :暂存
ssh-keygen -t rsa -C [email protected]:创建SSH私钥和公钥 ,id_rsa私钥用于验证自己身份。id_rsa.pub公钥用于向服务器表明自己的身份。
git remote add:将本地代码库提交到远程仓库
git push -u origin master:将本地master分支提交到远程的master分支,并关联起来。
git clone git地址 :从远程仓库clone下来,新建一个本地仓库。
(4)代码仓库链接:(https://gitee.com/li_shao_nan/projects)和用户名:li_shao_nan,给出一个具有多次提交记录的项目示例
四、使用的单元测试框架,描述该框架具有的特色的单元测试功能,给出一个单元测试的示例。
所使用的单元测试框架为Google Test (简称gtest),是一个由 Google 的测试技术团队开发的测试框架,兼容Linux、Windows和macOS, gtest 支持c++代码多种类型的测试,包括单元测试。
单元测试(Unit Test)是对软件基本组成单元(如函数或是一个类的方法)在整个工程运行之前进行的测试,是开发者编写的一小段代码,用于检验被测试代码一个很小的、很明确的功能是否正确。在gtest中,一个测试用例(test case)可以包含一个或多个测试。一个测试程序可以包含多个测试用例。
(1)首先定义测试函数:使用 TEST() 宏来声明测试函数:
TEST(GlobalConfigurationTest, configurationDataTest)
(2)通过断言来检查条件是否为真,包括基本断言、二进制比较、字符串比较等;
ASSERT_* 版本的断言失败时会产生致命失败,并结束当前函数;
EXPECT_* 版本的断言失败时产生非致命失败,但不会中止当前函数。
五、心得体会
由于对macOS平台以及Clion编译环境的不熟悉,没有提前做好准备工作,导致没能实现git版本控制以及Google test单元测试。将在后续工作继续学习,实现以上功能。