首页 新闻 会员 周边

C# 怎么才能高效,快速的看懂别人写的项目?

1
[已解决问题] 解决于 2012-08-21 09:37

拿到一个项目的源代码,可能是winForm,也可能是Web项目,一般都是怎么看才能快速的了解这个项目?你们拿到项目时是按F11来阅读的吗?我是菜鸟,求指导!

hexllo的主页 hexllo | 菜鸟二级 | 园豆:318
提问于:2012-06-01 11:18
< >
分享
最佳答案
5

这个要看源代码质量如何了,如果质量很差,那没办法,很难~~

如果质量很好,个人认为要按Top-Down的方式来看:

1. 了解需求

2. 看项目结构,一般项目结构会体现中系统结构上的层次,并根据经验和项目命名猜测作者的设计思想

3. 然后展开项目看目录,同样,根据经验和目录命名猜测作者的设计思想,例如,如果看到一个目录为Caching,那它就是和缓存有关,若是Data,则可能和数据访问有关,在你看目录的时候,就都是看目录,不要去看其中的类的实现细节

4. 然后展开目录浏览文件,根据文件名猜测该文件是做什么用的,对于部分感兴趣的文件可打开看详细,但大部分暂不用看那么细

5. 通过以上几步,对项目的整体构造应该有了一些了解,这时可以随手找一些接口、抽象类走马观花式的查看,不用太细,只为加深一点理解和印象

6. 然后找一个入口点,比如界面上的某个操作,通过代码看他大概调用了哪些文件,如果这件代码中嵌套调用了其它接口、类和方法,则先不用看嵌套调用的那些,先只看当前文件,比如现在在看一个名为CreateOrder()(创建订单)的方法:

public void CreateOrder(...) {
    if (IsValidUser(user)) { 
       var orderId = OrderIdGenerator.GenerateId();
       var order = new Order(orderId);
       ...
    }
}

其中嵌套调用了IsValidUser(),GenerateId()这两方法,但我们先不用去看它们的细节,因为从名字上看,就已经可以知道它是在验证用户,生成一个OrderId,当前的目标就是了解CreateOrder,看完了CreateOrder,才再考虑是否再看看GenerateId()的细节以了解Id的生成方法。

综上所述,原则上是采用至顶向下的方法,一层一层往下剖析,在看上层时,先不用太了解下层的细节,例如,看目录时就是看目录,不用马上打开里面的类看实现细节(也可以说我们要采用广度优先的方式查看代码,而不是深度优先:-))。一般也不用看到最底层,因为项目的开发过程中会慢慢了解底层细节,一般了解了大体结构就可以接手开始做了。

奖励园豆:5
水言木 | 小虾三级 |园豆:586 | 2012-06-02 16:49

菜鸟学习了! 谢谢分享经验!

土豆屋 | 园豆:354 (菜鸟二级) | 2012-06-04 11:05
其他回答(8)
0

右击->转到定义

happydaily | 园豆:301 (菜鸟二级) | 2012-06-01 11:20
0

项目,

1\先了解业务;

2\结合业务整理数据库

3\结合业务将系统流程走一遍

4\结合代码,数据库,业务进行全面了解.

工具方面:

可以借助Recharper进行看,主要功能:转到定义,转到实现,找到文件在解决方案中的目录位置,快速找到项目中的文件等.

 

.net指令 | 园豆:155 (初学一级) | 2012-06-01 11:46
1

我的习惯:

1、如果能跑就跑一跑,熟悉它;

2、看各个项目的名字,猜测用途和架构;

3、对不明白的地方再深入了解,用的多的也是Find impl , find declear

today4king | 园豆:3499 (老鸟四级) | 2012-06-01 14:40
0

看功能,了解整体结构,看类图,读具体主功能代码。

winzheng | 园豆:8797 (大侠五级) | 2012-06-01 17:01
0

1.摸清数据库的表结构

2.看功能

3.最后是界面

在delphi路上 | 园豆:202 (菜鸟二级) | 2012-06-01 17:09
0

调试,了解表结构,了解业务

彬彬@科比 | 园豆:43 (初学一级) | 2012-06-02 10:47
0

从最底层往上看,转到定义。

无情、 | 园豆:147 (初学一级) | 2012-06-04 11:24
0

先自己要修行到一定火候,然后再谈其他。

夜匿 | 园豆:202 (菜鸟二级) | 2015-05-15 15:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册