【转】带你玩转Visual Studio——04.带你高效开发

上一篇文章带你玩转Visual Studio——带你了解VC++各种类型的工程一文中讲了各种类型VC++工程的主要功能和用途。现在将带你一起快速开发c++程序。

有过Java开发经验的人都知道Java的常用开发工具(如Eclipse、Intellij IDEA等)都有非常强大的关键字高亮、智能提示、快速追踪等的功能。那也许你就要问了:进行C++开发的Visual Studio是否也有这个功能呢?首先要说明的是Visual Studio本身并没有这么强大的功能(至少VS2010及之前版本是这样的,有一些简单的代码跟踪能力但是很难用),但它有一个非常强大和好用的插件有这些功能,它就是VassistX,也称为VC助手,它就是本文要讲的内容。


VassistX的简单介绍与下载安装

简单介绍

VassistX的全称是Visual Assist X,是whole tomato开发的一个非常好用的插件,可用于VC6.0及Visual Studio的各个版本(包括VS.NET2002、VS.NET2003、VS2005、VS2008、VS2010、VS2012、VS2013及VS2015)。

VassistX有以下主要功能:
智能提示:关键字的提示,已有类名、方法名的提示,类成员(成员数据和成员函数)的提示;
代码高亮:关键字、类名、方法名等用不同的颜色进行高亮,方便代码的阅读;
快速追踪:声明与实现的快速跳转,.cpp与.h文件的快速切换;
高效查找:文件名的查找,标识符的查找,标识符补引用的查找;
代码重构:重命名标识符(变量名、方法名、类名等,这个非常有用),自动添加成员变量的Set/Get方法,自动添加函数的注释等。

下载与安装

下载:

官方下载地址:http://www.wholetomato.com/downloads/default.asp
你也可以到中文的一些网站去下载,网上一搜一大片。

安装:

安装非常简单,你只需要点击VA_X_Setupxxxx.exe进行默认安装即可,这没什么要说的。

注册码

还是那句话:自己想办法(以后都不再进行说明),如果有钱还是支持正版,毕竟作为程序员的我们应该知道写一个好的程序不容易。



VassistX的使用指南

1.通过“Tip of the day”快速学习。

在你安装VassistX后,启动VS时,会有一个帮助提示(如下图),这是你快速学习VassistX的最好方式,还有小动画提示,一看就懂。如果你看不懂英文,看小动画也能明白怎么回事。

tip of the day
图 1:tip of the day

 

如果你不希望每次启动VS时都弹出这个对话框,只需把左下角的”Show tips at startup”的勾选去掉就可以。如果需要再次弹出对话,在菜单中选择VassitX\Visual Assist X Option…–>Starup,把Show tip of the day勾选上即可。


2.主要窗口和工具

插件装上之后你应该就能感觉比以前好多了,比如代码高亮啊,智能提示啊,应该立马就能体现出来。但这还是要简单介绍一下。

 

窗口视图
图 2:窗口视图

 

插件成功安装之后,菜单栏会多一个VassistX的菜单,这里包含了VassistX的所有功能和相关的设置,设置方面后面还会进一步讲。
左侧会有两个VA Outline和VA View视图(如果没有,可用菜单VassistX\Tools\VA Outline调出来)。VA Outline这个视图很有用,也是我用的最多的一个视图,它能清晰地呈现一个类中的各个成员。
工具栏也会多一个VassistX工具组。这个我用的最多的要数最右边的.h与.cpp的切换按钮。


3常用的快捷键

这里只列出一些最常用的快捷键,一般记住这些也就够用了。

快捷键说明备注
Alt+G快速跳转,如由声明跳转到实现,由实现跳转到声明。光标要在标识符处
Alt+O.h与.cpp文件的快速切换 
Alt+Shift+F查找标识符所有被引用的位置光标要在标识符处
Alt+Shift+O查找整个Solution下的某个文件O指open,打开指定的文件
Alt+Shift+S查找标识符S指Symbol
Alt+Shift+R重命名标识符光标要在标识符处,R指ReName
Ctrl+Shift+V选择剪切板的内容进行粘贴 

更改快捷键

菜单Tools\Option…,然后在打开的对话框中选择Keyboard,Show commands containning中输入VAssistX就能看到VAssistX的各种功能,你可以设置某一指定功能的快捷键。如你输入VAssistX.refactorRename,就能看到重命名的默认快捷键是Shift+Alt+R,你在Press shortcut keys中按下快捷键更改它。

设置快捷键
图 3:设置快捷键

 



VassistX的高效开发的属性配制

选项设置

VassistX有些默认设置并不太友好,我们可以自己重新设置它。在菜单中选择VassitX\Visual Assist X Option…打开设置对话框。以下是我个人的偏好设置,仅作参考(只说明一些关键设置的含义)。

 

设置1
图 4:设置1


1.拼写错误检测(这个不要选,不然老会有红色的波浪线提示);
2.类型错误检测(这个选上,可以测试你的变量类型是否正确);

 

 

设置2
图 5:设置2


1.高亮引用的标识符(设置颜色,一个当前词的颜色,一个是非当前词的颜色);
2.自动高亮当前光标所在处标识符
3.高亮查找引用的结果;
4.高亮重命名标识符时关联的变量;

 

设置3
图 6:设置3


1.(黑色)高亮匹配的括号;
2.(红色)高亮不匹配的括号;
3.高亮当前光标所在的行(可选择高亮前景或高亮背景);
4.纵向指示器的分隔线,一般用于控制一行代码的字符数;
5.高亮查找结果。

 


注释配制与自动添加代码

注释也是程序的一个重要组成部分之一,好的注释是提高代码的可读性和程序的可维护性的一个关键因素,而要写大量的注释是一件非常繁琐的事情,给程序员增加了不少负担,而VAsssistX就可以帮我们减轻这种负担。将光标移到函数名处,右键鼠标选择Refactor\Document Method可自动帮我们添加函数的注释。

我们可以自己配制自定义的注释格式。选择菜单:VAssistX\Insert VA Snippet…\Edit VA Snippet…进行设置。给出我的相关设置,仅作参考:

Title: File header detailed
Shortcut: fh
Description: 对整个文件进行注释

//===============================================================
//Summary:
//          $FILE_BASE$ 类, $end$
//FileName:
//          $FILE_BASE$.$FILE_EXT$
//Remarks:
//          ...
//Date:
//          $YEAR$/$MONTH$/$DAY$
//Author:
//          %USERNAME%(luoweifu@126.com)
//===============================================================

说明:两个$符号之间的内容都是VAssistX中定义的宏,参见文后的附录:Visual Assist X Snippets 宏


Title: Refactor Document Method
Shortcut:
Description: 对函数进行注释

//---------------------------------------------------------------
//function: 
//          $SymbolName$ $end$
//Access:
//          $SymbolVirtual$ $SymbolPrivileges$ $SymbolStatic$
//Parameter:
//          [in] $MethodArg$ - 
//Returns:
//          $SymbolType$ - 
//Remarks:
//          ...
//author:    %USERNAME%[luoweifu]
//---------------------------------------------------------------

Title: #ifndef … #endif
Shortcut: #ifn
Description: 防止头文件重复包含

#ifndef __$FILE_BASE_UPPER$_H__
#define __$FILE_BASE_UPPER$_H__
$end$
#endif  //__$FILE_BASE_UPPER$_H__

Title: Refactor Encapsulate Field
Shortcut:
Description: 添加类中成员变量的Get/Set方法。

    $end$$SymbolType$ Get$GeneratedPropertyName$() const{return $SymbolName$;}void Set$GeneratedPropertyName$($SymbolType$ val){$SymbolName$ = val;}

Title:
Shortcut: //-
Description: 用于某一个重要修改的注释,并记录修改时间。

// $end$ [$YEAR$/$MONTH$/$DAY$ %USERNAME%]

Title:
Shortcut: ///
Description: 分隔线,用于重要的代码块的分隔。

//===============================================================
$end$
  •  

附录

Visual Assist X Snippets 宏

.Reserved StringMeaning样例或说明
DateDATEDATEYear/month/day formatted as %04d/%02d/%02d2015/10/02
 DATELOCALEDATELOCALECurrent date in locale format本地化格式境
 DAYDAYDay of month formatted as %d2
 DAY02DAY02Day of month formatted as %02d02
 DAYNAMEDAYNAMEDay abbreviation in locale format//Fri
 DAYLONGNAMEDAYLONGNAMEFull name of day in locale format//Friday
 MONTHMONTHMonth formatted as %d10
 MONTH02MONTH02Month formatted as %02d10
 MONTHNAMEMONTHNAMEMonth abbreviation in locale formatOct
 MONTHLONGNAMEMONTHLONGNAMEFull name of month in locale formatOctober
 YEARYEARYear formatted as %d2015
 YEAR02YEAR02Year formatted as %02d15
TimeHOURHOURHour formatted as %d16
 HOUR02HOUR02Hour formatted as %02d16
 MINUTEMINUTEMinute formatted as %02d29
 SECONDSECONDSecond formatted as %02d30
FileFILEFILEFull filename with path*D:\CppWorkspace\DesignPattern\DesignPattern\Water.h
 FILEUPPERFILEUPPERFull filename with path in uppercase*D:\CPPWORKSPACE\DESIGNPATTERN\DESIGNPATTERN\WATER.H
 FILEBASEFILEBASEFilename without path or extension*Water
 FILEBASEUPPERFILEBASEUPPERFilename without path or extension in upper case*WATER
 FILEEXTFILEEXTFilename extension*h
 FILEEXTUPPERFILEEXTUPPERFilename extension in upper case*H
 FILEPATHFILEPATHPath of file*D:\CppWorkspace\DesignPattern\DesignPattern
 FILEPATHUPPERFILEPATHUPPERPath of file in upper case*D:\CPPWORKSPACE\DESIGNPATTERN\DESIGNPATTERN
GeneralclipboardclipboardCurrent clipboard当前剪贴板内容
 endendPosition of caret after expansion输入完成光标位置
 selectedselectedCurrent selection**选定内容
 $$Literal ‘$’ character$转义
Symbol ContextMethodNameMethodNameName of containing method 
 MethodArgsMethodArgsMethod parameters函数参数列表
 ClassNameClassNameName of containing class类名称
 BaseClassNameBaseClassNameName of base class of containing class基类名称
 NamespaceNameNamespaceNameFully qualified namespace name命名空间
GUIDGUIDDEFINITIONGUIDDEFINITIONGenerated GUID formatted for use in a definitionGUID定义,“,”分割
 GUIDSTRINGGUIDSTRINGGenerated GUID formatted for use in a stringGUID字符串,“-”分割
 GUIDSTRUCTGUIDSTRUCTGenerated GUID formatted for use in a structGUID结构
 GUIDSYMBOLGUIDSYMBOLGenerated GUID formatted with underscoresGUID符号,”_”分割
 GUIDSTRINGUPPERGUIDSTRINGUPPERUppercase version of GUIDSTRINGGUIDSTRING
 GUIDSTRUCTUPPERGUIDSTRUCTUPPERUppercase version of GUIDSTRUCTGUIDSTRUCT
 GUIDSYMBOLUPPERGUIDSYMBOLUPPERUppercase version of GUIDSYMBOLGUIDSYMBOL
 The following reserved strings are available only in refactoring snippets  
RefactorGeneratedPropertyNameGeneratedPropertyNameProperty name generated during Encapsulate Field与类属性同名的访问方法,首字符大写(类似Java中的Set/Get方法)
 generatedPropertyNamegeneratedPropertyNameSame as GeneratedPropertyNameGeneratedPropertyName but with lower-case first letter与类属性同名的访问方法,首字符小写
 MethodArgMethodArgOne parameter of the method and its type不可用
 MethodArgNameMethodArgNameOne parameter of the method方法参数
 MethodArgTypeMethodArgTypeType of one parameter of the method函数体
 MethodBodyMethodBodyBody of implementation函数体
 MethodQualifierMethodQualifierOptional qualifiers of method尚不清楚
 ParameterListParameterListParameters separated by commas参数列表
 SymbolContextSymbolContextContext and name of method函数全名(含类信息等)
 SymbolNameSymbolNameName of method函数名称
 SymbolPrivilegesSymbolPrivilegesAccess of method访问控制
 SymbolStaticSymbolStaticKeyword static or blankstatic
 SymbolTypeSymbolTypeReturn type of method函数返回类型
 SymbolVirtualSymbolVirtualKeyword virtual or blankvirtual


上一篇回顾:
带你玩转Visual Studio——带你了解VC++各种类型的工程

下一篇要讲述的内容:
带你玩转Visual Studio——带你高效管理代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【信号与线性系统】知识点与学习攻略

知识点理解 关于正交分解可以看这个视频: https://www.bilibili.com/video/BV1qV411C7u6/ 记住两个完备正交函数集: 一个是正余弦三角函数,非零不同频率项乘积为0,非零同频率项乘积积分为T/2,零频率项乘积积分为T。 一…

2020-12-19

逆变(contravariant)与协变(covariant)是C#4新增的概念,许多书籍和博客都有讲解,我觉得都没有把它们讲清楚,搞明白了它们,可以更准确地去定义泛型委托和接口,这里我尝试画…

微软模拟飞行10厦门航空涂装_《微软飞行模拟器》多人游戏模式演示:可组队飞行...

IT之家3月29日消息 《微软飞行模拟器》(Flight Simulator)是2020年最受期待的游戏之一,开发商Asobo Studio现在分享了一段新的视频,详细介绍了《微软飞行模拟器》的多人游戏模式。《微软飞行模拟器》游戏的主模式将看到所有玩家在同一个世界中一起玩。微…

【转】UDP协议格式以及在java中的使用

UDP协议格式以及在java中的使用 UDP是面向无连接的通讯协议,由于通讯不需要连接,所以可以实现广播发送。UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。 UDP适用于…

python网页填表教程_PythonSpot 中文系列教程 · 翻译完成

原文:PythonSpot Python Tutorials 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。在线阅读ApacheCN 学习资源目录PythonSpot 中文系列教程初学者 介绍Python 字符串字符串&#xff0…

【转】TCP/IP协议到底在讲什么?【乐搏TestPro】

用比喻和漫画给有需要的小伙伴解释下IP、TCP捎带题一下各种协议与HTTP协议的关系; 目录: 负责传输的IP协议 确保可靠性的TCP协议 各种协议与HTTP协议的关系 一、负责传输的IP协议 按照层次分,IP(全称:Internet Prot…

Qt中标绘功能的实现方法对比

使用Qt开发桌面程序,经常会有标绘的需求,一般有以下几点: 新建:圆、矩形、椭圆、文字标注,插入图像等;编辑:指对已标绘内容的属性编辑修改功能;删除:指对已标绘内容的删…

【转】PE文件结构详解--(完整版)

(一)基本概念 PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,P…

【转】逆变与协变详解

逆变(contravariant)与协变(covariant)是C#4新增的概念,许多书籍和博客都有讲解,我觉得都没有把它们讲清楚,搞明白了它们,可以更准确地去定义泛型委托和接口,这里我尝试画…

【转】GitHub 从单机到联机:玩转 Pull Request

最近在参与一个叫 Exercism 的项目,这是一个由 GitHub 生态工程师 Katrina Owen 发起的编程练习社区,提供了超过50门语言的练习。作为用户,你仅需使用命令行工具即可下载和提交练习,提交后还可以和社区中其他学习者交流讨论。 Exe…

【转】GitHub客户端操作1--仓库相关操作github团队协作流程

1、创建仓库 点击“”,点击Create,然后填写Name为my,点击Create repository,即可创建一个my仓库 2、从本地仓库存放位置,添加test仓库到GitHub客户端 点击“”,点击Add,然后点击Browse,选择仓库存放位置&a…

【转】GitHub客户端操作2--分支操作

简单分支操作 (1)创建新分支:my分支 备注:新创建的分支:my分支里面的内容是和master分支里面的内容是完全一样的。 (2)删除my分支 (3)修改my分支【在my分支上进行项目内…

【转】GitHub客户端操作3--pull Request(拉请求)

一、参考说明 参考文章一:Github上提交代码(pullrequest) 网址: https://jingyan.baidu.com/article/358570f64dcdc2ce4724fc32.html 参考文章二:GitHub——Pull Request 网址:http://blog.csdn.net/u012325167/article/detai…

【转】GitHub上README.md教程

本文是转载文章,文章的来源:csdn博客 博主:果冻虾仁 文章: GitHub上README写法暨GFM语法解读 博文地址:https://blog.csdn.net/guodongxiaren/article/details/23690801 转载请保留原作者guodongxiaren的原文地址&…

【转】WPF单位真的与分辨率无关吗?

转载自http://www.cnblogs.com/helloj2ee/archive/2009/04/21/1440709.htm WPF从发布之日起,一直将“分辨率无关(resolution independence)”作为其亮点,声称使用WPF制作的用户界面在轻巧的Ultra-Mobile PC的屏幕上和在50英寸的电视机上都能很好地显示。…

【转】世上最简单的vue教程

一、需要了解的基本知识 node.js Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境…

工程师学乐理(一)尝试理解音乐

前言 很早就接触了乐理,但是一直没有学懂,越学问题越多。个人感觉,其中很大的原因是有关教材写得看不懂,用未知的东西描述未知的东西,不知所云。前几年还买了一把吉他,买了课程,断断续续学了几…

【转】Vue.js入门教程(一)从静态页面到前后端分离开发

第一章:基础知识 我能看懂吗? 只要你现在能用htmlcssjs制作一个静态页面,相信我,你100%可以读懂这篇文章。 本文尤其适合那些想要了解前后端分离开发技术,或者刚刚脱离传统MVC开发模式的前端人员。 回想一下&#xf…

工程师学乐理(二)音阶及倾向性

前言 阅读本文前,请先阅读《写给理工科人看的乐理》。 本文主要讲音阶。在其他地方能查到的细节,我们这里就不会多说了。本文重点在于梳理音阶背后的逻辑,尝试把技术点串起来讲。 没有逻辑的东西是咱们工程师比较讨厌的,任何大自…

【转】VS工具:实时可视化树

VisuaStudio号称全宇宙最强大的IDE。在VS2015版本中,微软又给广大开发者带来了一个强大的工具:实时可视化树(Live Visual Tree,以下简称可视树)。其实树可视化工具并不是新鲜的东西,在WPF的时候就有了,只是这次微软集成…