进入主题之前,先说一下ea工具:EA——Enterprise Architect,是一种建模工具,想了解请点解 这里
随着能力的提升,现在做的项目,都要求先画类图,再敲代码,但是每次画图后,在敲代码起初,还跟图对应着呢,到后来,发现图中有不合适的地方,然后就把图改一下,再敲代码,但是图中错误太多的话,就懒得再去改图了,直接修改代码了。这样时间一长,图就算废弃了。开发完了,态度好一点的人,会用代码去生成一下图去交差,有的干脆不管了,结果给同一项目组其他同事的工作造成了很大的影响。当然我说的这种情况在小公司中存在的比较多。当然我们在自学的时候,也会遇到这种情况。
如何解决这一问题呢?
从根本上说,当然是分析到位,画图时考虑周全,程序员要严格的按图跟文档去编码。不能私自更改代码。如需更改,需要将建议提交到项目经理那去审核,由项目经理去修改。当然好多公司或者个人不会按照这些步骤走。毕竟改过来改过去,会浪费很多时间。所以让图和代码同步,即可解决这一问题。
先说思路吧:我这里用到的是EA和VS2010,用EA画类图,然后生成代码框架。在VS项目中添加生成的代码,然后在VS中修改代码,可以在EA中通过逆向代码工程更新原来的类图。
简单的演示一下:
首先创建一个项目,我这里创建的是控制台应用程序:
然后在EA中画一个类图
在右键,选择生成代码:(因为我这个是单个类,所以直接在类上选择生成代码,如果你类图中类比较多,可以在上面那个类似文件夹的图标上,选择生成代码)
选择项目文件夹下,并选对相对应语言。我这里用的是C#。点击生成即可。如图:
这样在项目文件夹下,就看见多了一个Human.cs文件
现在这个图跟代码就已经建立的关系,因为EA中集成了代码编辑器,所以我们可以通过在类上右键,选择查看源代码:
就可以打开源代码了:
然后在vs项目中,添加上刚生成的cs,
这样,在vs项目中,就多了一个Human类:
打开看一下,由图直接生成的代码:
现在代码和图算是彻底可以同步了。当我们在VS中修改代码后,在EA中,选中相应的类,右键选择|“代码同步”,即可把代码中修改的部分,同步到类图中。
比如我们在代码中添加一个address字段和属性,并在构建函数和Print方法中添加内容:
address字段和属性:
随着能力的提升,现在做的项目,都要求先画类图,再敲代码,但是每次画图后,在敲代码起初,还跟图对应着呢,到后来,发现图中有不合适的地方,然后就把图改一下,再敲代码,但是图中错误太多的话,就懒得再去改图了,直接修改代码了。这样时间一长,图就算废弃了。开发完了,态度好一点的人,会用代码去生成一下图去交差,有的干脆不管了,结果给同一项目组其他同事的工作造成了很大的影响。当然我说的这种情况在小公司中存在的比较多。当然我们在自学的时候,也会遇到这种情况。
如何解决这一问题呢?
从根本上说,当然是分析到位,画图时考虑周全,程序员要严格的按图跟文档去编码。不能私自更改代码。如需更改,需要将建议提交到项目经理那去审核,由项目经理去修改。当然好多公司或者个人不会按照这些步骤走。毕竟改过来改过去,会浪费很多时间。所以让图和代码同步,即可解决这一问题。
先说思路吧:我这里用到的是EA和VS2010,用EA画类图,然后生成代码框架。在VS项目中添加生成的代码,然后在VS中修改代码,可以在EA中通过逆向代码工程更新原来的类图。
简单的演示一下:
首先创建一个项目,我这里创建的是控制台应用程序:
![](https://img-my.csdn.net/uploads/201208/23/1345720666_7052.png)
然后在EA中画一个类图
![](https://img-my.csdn.net/uploads/201208/23/1345720707_9734.png)
在右键,选择生成代码:(因为我这个是单个类,所以直接在类上选择生成代码,如果你类图中类比较多,可以在上面那个类似文件夹的图标上,选择生成代码)
![](https://img-my.csdn.net/uploads/201208/23/1345720728_7752.png)
选择项目文件夹下,并选对相对应语言。我这里用的是C#。点击生成即可。如图:
![](https://img-my.csdn.net/uploads/201208/23/1345720749_4571.png)
这样在项目文件夹下,就看见多了一个Human.cs文件
![](https://img-my.csdn.net/uploads/201208/23/1345720771_7881.png)
现在这个图跟代码就已经建立的关系,因为EA中集成了代码编辑器,所以我们可以通过在类上右键,选择查看源代码:
![](https://img-my.csdn.net/uploads/201208/23/1345720793_7744.png)
就可以打开源代码了:
![](https://img-my.csdn.net/uploads/201208/23/1345720813_9319.png)
然后在vs项目中,添加上刚生成的cs,
![](https://img-my.csdn.net/uploads/201208/23/1345720832_8251.png)
这样,在vs项目中,就多了一个Human类:
![](https://img-my.csdn.net/uploads/201208/23/1345720852_2758.png)
打开看一下,由图直接生成的代码:
- ///
- // Human.cs
- // Implementation of the Class Human
- // Generated by Enterprise Architect
- // Created on: 23-八月-2012 17:18:28
- // Original author: Admin
- ///
- namespace Human {
- /// <summary>
- /// <b>学生类</b>
- /// <b>包括3个字段:name,age,sex</b>
- /// <b>添加对应的3个属性Name,Age,Sex</b>
- /// <b>2个方法:</b>
- /// <b>构造方法和Print方法</b>
- /// </summary>
- public class Human {
- /// <summary>
- /// 年龄
- /// </summary>
- private int age;
- /// <summary>
- /// 姓名
- /// </summary>
- private string name;
- /// <summary>
- /// 性别
- /// </summary>
- private string sex;
- public Human(){
- }
- ~Human(){
- }
- public virtual void Dispose(){
- }
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="name">姓名</param>
- /// <param name="age">年龄</param>
- /// <param name="sex">性别</param>
- public Human(string name, int age, string sex){
- }
- /// <summary>
- /// 年龄
- /// </summary>
- public int Age{
- get{
- return age;
- }
- set{
- age = value;
- }
- }
- /// <summary>
- /// 姓名
- /// </summary>
- public string Name{
- get{
- return name;
- }
- set{
- name = value;
- }
- }
- /// <summary>
- /// 输出学生信息
- /// </summary>
- public void Print(){
- }
- /// <summary>
- /// 性别
- /// </summary>
- public string Sex{
- get{
- return sex;
- }
- set{
- sex = value;
- }
- }
- }//end Human
- }//end namespace Human
现在代码和图算是彻底可以同步了。当我们在VS中修改代码后,在EA中,选中相应的类,右键选择|“代码同步”,即可把代码中修改的部分,同步到类图中。
比如我们在代码中添加一个address字段和属性,并在构建函数和Print方法中添加内容:
address字段和属性:
- /// <summary>
- /// 住址
- /// </summary>