如何更好的搭建Visual C++环境

开发 后端
规范Visual C++环境易懂的代码才是可重复使用的,规范的代码具有更长的寿命,具有更好的可维护性,也更方便后期的扩展,下面是一些提示。

各种分析和设计Visual C++环境最突出的就是极限编程了,很多方法都受它影响,它最重要的两条是先写测试和结对编程。先写测试能强迫程序员给出完整清晰的类接口,还能在每次建立系统时自动测试。

1.Visual C++环境
适用预处理#define定义一个或多个调试标记,在代码中把调试部分使用#ifdef 和#endif 进行管理。当程序最终调试完成后,只需要使用#undef标记,调试代码就会消失。常用的调试标记为DEBUG, 语句序列:

2.运行期间调试标记

   在程序运行期间打开和关闭调试标记。通过设置一个调试bool标记可以实现。这对命令行运行的程序更为方便。

例如下面代码:

  1. #include<iostream> 
  2.  
  3. #include <string> 
  4.  
  5. using namespace std;  
  6.  
  7. bool debug =false;  
  8.  
  9. int main(int argc,char*argv[])  
  10.  
  11. {  
  12.  
  13.    for(int i=0;i<argc;i++)  
  14.  
  15.       if(string(argv[i])==“--debug=on“)  
  16.  
  17.                 debug = true;  
  18.  
  19.      bool go=true;  
  20.  
  21.    while(go)  
  22.  
  23. {  
  24.  
  25.    if(debug)  
  26.  
  27.     {  
  28.  
  29.     调试代码  
  30.  
  31.      }else {}  
  32.  
  33. }  
  34.  

3.把变量和表达式转换成字符串

可是使用字符串运算符来实现转换输出定义

#define PR(x) cout<<#x”=”<

4.c语言的assert()

该宏在中,,当使用assert时候,给他个参数,即一个判读为真的表达式。预处理器产生测试该断言的代码,如果断言不为真,则发出一个错误信息告诉断言是什么以及它失败一会,程序会终止。

#include< assert>

using namsapce std;

int main()

{

   int i=100;

assert(i!=100); //Fails

}

当调试完毕后在#include前加入#define NDEBUG即可消除红产生的代码

}

 

C++代码和调试

本部分教程主要介绍了良好的Visual C++环境风格、如何书写安全的代码以及在Visual C++环境下的程序调试技术,这些内容对于新员工从学生成长为真正的程序员,逐步参与实际项目的开发工作,以及阅读第三方代码非常重要。

1 规范易懂的代码

现阶段软件开发,都要依靠团队的合作。程序员不再是个人英雄主义的代名词,程序员一方面要依赖大量其他程序员完成的代码,一方面又提供大量代码给其他人使用,代码实际上具备了两个要素:首先是可靠的提供某种功能,其次是清楚地表达作者的思想。任何交流都必须有一定的规范才能进行,体现在代码中就是规范易懂。另外,规范易懂的代码才是可重复使用的,规范的代码具有更长的寿命,具有更好的可维护性,也更方便后期的扩展。

1.1 好代码的几个特征

怎么样的代码才算规范易懂,体现在细节上会有无数的争论,实际上无论风格和习惯如何,好的代码具有几个共同的特征:
1. 良好的命名:好的变量名和函数名,让阅读代码的人马上就知道该变量或者函数的作用,很容易就能理解程序的大概结构和功能。程序员有必要理解匈牙利命名法。
2. 一致性:一致性带来更好的程序,一致的代码缩进风格能够显示出代码的结构,采用何种缩进风格并不重要,实际上,特定的代码风格远没有一致的使用它们重要。
3. 注释:注释是帮助程序读者的一种手段,程序作者也是未来的程序读者之一。最好的注释是简洁地点明程序的突出特征,或是提供一种概观,帮助别人理解程序;但如果注释只是说明代码已经讲明的事情,或者与代码矛盾,或者以精心编排的形式迷惑干扰读者,那就是帮了倒忙。

1.2 养成好习惯

前面已经提过,特定的代码风格远没有一致的使用他们重要,所以,把过多的精力放到A or B的选择上是浪费时间,你要做的是坚持。如何书写规范易懂的代码,如何养成良好的习惯,下面是一些提示。

1. 按照匈牙利命名法给变量和函数命名。
2. 遵循国际流行的代码风格。
3. 写代码的同时就遵循你的命名规范和书写风格,千万不能事后补救。
4. 利用工具(Parasoft C++ Test)检查你的代码,评估一下自己形成良好的习惯没有。
5. 坚持不懈直到养成习惯。

2 编写安全可靠的代码

在大型应用软件系统中,各个代码片段共同构成完整的系统,Visual C++环境间的交互非常频繁,程序崩溃往往并不在错误发生的时候就发生,而是延迟了一段时间,经过数个函数之间的中转后才发生,此时定位和查找错误非常费时费力,如何才能及时反映程序中的错误。

如何在代码中避免一些幼稚的语义错误呢?一个函数往往会被其他程序员拿来使用,但是他怎么能够正确的使用其他人编写的函数呢?这部分内容能够(部分)帮助解决这些问题。

2.1 契约编程
契约编程(Design by Contract)的思想在C++圣经级的著作,C++之父Bjarne Stroustrup的《C++程序设计语言》中略微提到过,OO领域的圣经级著作《面向对象软件构造》以大篇幅阐释了契约编程,现在越来越多的软件开发人员认识到契约编程的重要性,并逐步地在实际工作中采用契约编程。

对契约编程简单的解释是:对实现的代码块(函数、类)通过规定调用条件(约束)和输出结果,在功能的实现者和调用者之间定义契约。
具体到我们的工作,开发人员应该对完成的每个函数和类,定义契约。契约编程看似平淡无奇,对程序开发没有什么具体的帮助,实际上,契约编程在开发阶段就能够最大程度的保证软件的可靠性和安全性。#t#

在实际工作中,每当你需要使用其他程序员提供的模块,你并不知道如何调用,也不知道你传入的参数是否合法,有时候对于功能模块的处理结果也不敢相信。这些本来应该很明显的信息因为模块提供者没有显式的提供,

造成了调用者只能忐忑不安的摸着石头过河,浪费了大量时间,而且为了让自己的代码更安全可靠,在代码中做了大量的判断和假设,造成代码结构的破坏和执行效率的损失,最后,调用者依旧不能确保自己的调用是正确的。而契约编程通过严格规定函数(或类)的行为,在功能提供者和调用者之间明确了相互的权利和义务,避免了上述情况的发生,保证了代码质量和软件质量。

Visual C++环境主动调试
主动调试指在写代码的时候,通过加入适量的调试代码,帮助我们在软件错误发生的时候迅速弹出消息框,告知开发人员错误发生地点,并中止程序。这些调试代码只在Debug版中有效,当经过充分测试,发布Release版程序的时候,这些调试代码自动失效。

主动调试和契约编程相辅相成,共同保证软件开发的质量。契约编程相当于经济生活中签订的各种合同,而主动调试相当于某方不遵守合同时采取的法律惩罚措施。
各种开发语言和开发工具都提供这些调试语句,标准C++提供了assert函数,MFC提供了ASSERT调试宏帮助我们进行主动调试,在实际工作中,建议统一使用MFC的ASSERT调试宏。

责任编辑:chenqingxiang 来源: cnbeta
相关推荐

2010-01-13 10:45:44

Visual C++

2010-01-19 14:54:58

Visual C++

2010-01-15 19:28:59

C++

2010-01-15 16:25:48

学习C++

2010-01-15 16:17:04

Carbide C++

2010-01-13 18:44:03

C++编译

2010-01-28 15:31:34

学习C++语言

2010-01-15 18:06:20

C++引用

2010-01-18 15:19:41

Visual C++开

2010-01-12 18:00:30

Visual C++

2010-01-08 15:45:04

设置Dev C++

2010-01-22 18:06:24

C++代码

2009-06-05 14:54:09

EclipseC++环境搭建

2010-01-22 13:20:27

C++代码

2010-01-25 14:43:00

C++构造函数

2021-06-02 08:13:28

VscodeVisual stduC++

2010-01-12 15:13:37

Visual C++环

2010-01-14 16:54:02

C++开发环境

2010-01-11 14:05:01

C++学习方法

2010-01-26 10:01:17

学习C++
点赞
收藏

51CTO技术栈公众号