![更多课程](/zhuzhan/img/btn-course.png)
![选择中心](/zhuzhan/img/btn-center.png)
![logo](/zhuzhan/img/logo.png)
C/C++培训
达内IT学院
400-111-8989
![](/zhuzhan/images/weixin.jpg)
一、阅读资料
1、多看标准库文档,熟练使用其中常用的接口,标准库文档很多时候可以满足大部分需求。
2、多敲代码,多练习,将书中的知识转化为自己的代码。
二、程序员思维对于一个需求或者一个项目,应先思考如何设计。例如:
1、应该提供哪些接口,比如:返回图书信息,根据图书id,返回图书的全部信息。(比如:可以将图书信息作为参数引用传送,而函数返回bool值,提示存在或者不存在)。
2、思考应该封装哪些变量及数据。
3、思考使用什么数据结构存储数据(比如:map、hashmap,如果使用这个数据结构,会给程序带来哪些影响,使用哪个数据结构,性能较高,扩展性较好)。
4、越简单越好,思考如果这个需求给其他人维护或者以后自己进行扩展,又应该如何设计这个项目使其更简单易懂又方便。
5、思考数据长度是多大,是固定长度还是可扩展长度,后期会不会扩展。比如:图书仓库为1000,后期会不会想修改,加到1500等等,需不需要大规模更改代码。
三、用户思维
1、用户只需要拿到.h文件和库,不应该提供给用户变量或者提供给用户会影响程序运行的变量及数据,这些应该封装到.cpp文件里。
2、对于用户输入导致数据有误,如果是用户习惯,比如:输入空格,程序应该对空格处理,返回合适值;对于其他的错误,程序应该提示并定位到错误的来源,并由程序设计者思考用户会不会允许该错误,并决定程序是否继续往下执行。
3、面向接口编程。
4、思考用户需要的接口,避免暴露不必要的变量或数据等(可以使用私有类封装起来),将具体实现放在该私有类里(私有类在.cpp文件中实现,用户不可访问)。
5、可以重构项目,但要把之前的项目的坑填完。但是过度优化也是一种灾难,如果一个工具,面向的用户是100个人,则不需要考虑给100000人用。
四、交流学习遇到问题的时候,与同事或同学交流一个需求或问题的设计思路。
1、思考与自己的思路相比有什么不同。
2、为什么他会采用这种解法,这种解法的优点是什么,(可以从可扩展性、可维护性、可读性等思考)。
3、自己的思路存在什么缺点以及优点,如何结合他的方法,寻求更好的解法。
4、不确定的就要问,要有自己的想法。
五、项目经验
1、长期维护一个项目可能会受到项目影响,会受到项目开发者思路的影响,接触不同的项目视野会越来越开阔,不同的项目会有不同的解决方法,有各自的优点与缺点,扬长避短。
2、一个项目,短期可能看不出来影响,长期维护,会发现最初设计的影响越来越大(开发、维护、扩展等等)。
3、接触模板越深后,会发现C++因为模板而变成是一个“新的语言”,模板千变万化,发现C++越来越难学。
4、不同平台接口不一样,比如安卓、ios、web等,使用方法也不一样,需要都去了解。
六、代码规范
1、参照匈牙利命名法与驼峰命名法。
2、一般include系统文件放在文件的最上方。
七、小tips
1、如果子类不再被继承,可将重载父类的方法设置为final,如果被继承,则像之前一样采用override。
2、对于一些由成员函数调用的函数,又不想把它们设置为成员函数,也不满足API函数,可不在.h文件中声明这些函数,在.cpp文件中直接定义。
3、std::vector<std::vector<std::string>>可以写成:typedef std::vector< std::string> one_array; typedef std::vector<one_array> two_array;
4、所有子类共有的东西放在基类中,或者把基类单独提出来,放在一个.h文件中。
5、对于memcpy这类直接操作内存的函数,一定要注意,因为这类函数是要写明读写多少字节的。如果某一个数组长度改写了,而memcpy函数长度忘了改,那么对内存的操作就会越界了。
6、匿名函数可以用于提供接口,可以试试传函数,将操作交给用户。
免责声明:整理文章为传播相关技术,版权归原作者所有,如有侵权,请联系删除
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!