码迷,mamicode.com
首页 > 其他好文 > 详细

编程工作的组织--llorch的Visual Studio 基础教程(一)

时间:2015-06-20 19:40:41      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

 

通用的示例说明:

  • 本系列博客只讨论工具的基础,不讨论任何语言。
    • 甚至不讨论快捷键:-)
    • 可以用鼠标就完成本教程
  • IDE默认指代的是Visual Studio 2013 Community Edition。 本系列文章的结尾,你可以熟练地使用它写程序。
  • 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要。
  • 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[]、{}、/、>>、=、(,)。
  • 检查一个设置项的表示方法为:
    • [窗口名称]/{菜单名称}/{子菜单名称}/{设置项项名称}=设置项的值
  • 例如默认的Debug配置:
    • [主窗口]/{解决方案配置管理器}=Debug
  • 检查多个设置项时,按照单个设置项的方式,逐一写出
  • 检查一个设置项有多个值的时候,用括号包括并用内部的逗号分隔,如:
    • [解决方案资源管理器]/{项目名称}/{引用}=(System,System.Core,System.Data,System.Xml)
  • 执行一个左键单击序列,就是将最后的检查项换成”/”,例如退出IDE:
    • [主窗口]/{文件}/{退出}/
  • 右键菜单的连接符号为>>,例如刷新Windows桌面:
    • [桌面]>>{刷新}/
  • 弹出窗口中的设置项的表示与上类似
  • MDI子窗口中设置项的表示与上类似,注意到在Visual Studio中,MDI子窗口的名称在它的左上角或者可能自动吸附到主窗口的四周
  • 标题栏和状态栏作为菜单的推广,适用于上述表示方法
  • 缺陷说明
    • 欢迎反馈,mailto:cqwd2010@qq.com
    • 作者的首选语言是C#
    • 作者是软狗
    • 作者的IDE没装中文语言包,所以有的名词翻译得不准确:-(
    • 由于还没有厘清相关的证书问题,版权保留
    • 系列文章没有提出或解决新的问题,目的只是科普

 

 

正文

在Visual Studio(以下简称IDE)当中,存在两个很微妙的专用名词”项目(project)”和”解决方案(solution)”。这两个概念对于我们组织工作有怎样的启示呢?

 

首先,从目录结构的特点来认识Visual Studio。

当我们以空白环境启动IDE后,通过

[主窗口]/{文件}/{新建}/{项目}/,可以呼出[新建项目]窗口。

在[新建项目]窗口中任意选择一个项目模板,由于默认有

[新建项目]/{解决方案}=创建新的解决方案,

因此在完成新建项目后,在[解决方案资源管理器]中出现了一个解决方案内含有一个项目的情况。

此时,

[解决方案资源管理器]/{项目名}>>{在Windows资源管理器中打开}/,

可以看到这个项目具有独立的输出目录:bin目录,其中的Debug文件夹就是项目的输出目标。

回到主窗口,

[主窗口]/{新建项目}/得到[新建项目],

再建一个项目附加到当前解决方案,

[新建项目]/{解决方案}=添加到当前解决方案。

此时,观察目录结构是

    • 解决方案
      • 项目1
        • 项目1.csproj
        • bin
          • Debug
          • Release
      • 项目2
      • 解决方案.sln

很显然,这样的设计哲学呈现的是,项目代表了某种”单元”的东西。而解决方案就是这些”单元”的集合。请试着猜想,我们对项目的引用进行添加的时候,自动生成的信息到哪里去了?是’解决方案.sln’还是’项目1.csproj’?

我们可以把这种特性用来组织程序的编写工作。也就是把项目(project)作为可以复用的单元。这个单元比类高级,因为类实质就是文本文档。这个单元又比实际的应用程序低级,因为有一些项目它不产生新的.exe只产生新的.dll。其实这个等级恰恰就是常说的”模块化重用”中的模块。

 

第二,从项目的引用和输出来思考Visual Studio的组织

既然输出是指,使用Visual Studio所做实际工作对应的新增项。那么它可能是一个dll,也可能是一个.exe。总之,它一定是一个新增的单元。

可以提出一个简单的问题:一个项目可以对应几个引用项目?一个项目可以对应几个输出项目?一个引用项目可以对应几个项目?一个输出项目可以对应几个项目?实际上通过自己编写编译脚本,比如Makefile之类的东西,是可以精确掌握编译的过程。但是很显然,在Visual Studio当中没有要求强制写编译脚本。可以说,既然编译过程可以自动化,那么为什么不利用这个好处呢?

利用这个好处的结果就是对上面问题的一种解答方式:一个项目可以引用多个项目,一个项目就是输出一个项目(假如是Application模板,那就是一个.exe,类库就是一个dll),而一个项目可以被其他任意多个项目引用。

借助这样的模块化统一思想,可以更加科学地划分问题域,限制问题出现的范围,有效地形成复用。

 

最后,从他人的应用程序来猜测Visual Studio中的组织

以360安全卫士为例,360安全卫士很显然对应一个”解决方案”。其主界面可以对应于IDE中的一个桌面应用程序项目,模块化的实际功能就可以对应于IDE当中的类库项目。同样的理解,还可以应用于其他的应用程序。

对于应用程序的安装包打包,实际上就是IDE当中的特殊项目:部署。

 

总结

一个功能丰富的应用程序很难像”Hello,World!”这样简单。Visual Studio提供了自动化的项目管理方法论,在其中,解决方案面向总的问题域,项目则提供了模块化的实现方式,理解并遵守这种方法论或许不能避免造轮子,但可以一定程度上避免自己始终造同一个轮子。

编程工作的组织--llorch的Visual Studio 基础教程(一)

标签:

原文地址:http://blog.csdn.net/u010289866/article/details/46575021

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!