`
langyu
  • 浏览: 888205 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

读代码的“深度优先”与“广度优先”问题

阅读更多
现在会读很多代码,小组同事写的、API、框架等,在这个问题上,感触颇深。

在读到一个主要逻辑的时候,如果它调用其它地方的方法,后面的处理要使用这个方法返回的数据。通常代码都相当多的,也不会在短时间内就能理解所有的逻辑。这时候我就会很困惑:根据调用的方法名称大概理解下概念,继续往下面读代码?还是点进去,看那个方法里面到底是什么?

如果那段代码里面还有很多外部调用,那更会面临更多的困惑。

难道这不是一个“深度优先”与“广度优先”的问题吗?

深度优先:遇到外部调用方法,点进去看它里面的处理逻辑,等看完,返回到主代码继续;
广度优先:先不管它里面怎么实现的,继续看后面的代码,等把主体代码理解通透后,再回头看每个模块的深层实现。

在经历过几次像这样的抉择后,再结合下实际的效果,我选择“广度优先”。

很可能在遇到这样调用其它地方代码的逻辑时,在没有搞清楚这部分代码做什么,产生什么样数据之前,往下读会越来越吃力。但等把外面的那段代码理解明白后,可能就不知道调用处的逻辑了,我经常会碰到这些的问题。

只好先根据命名和逻辑揣测下它的实现和返回的数据,再继续往下看,等这个架构比较清楚了,再回过头来看具体每块的逻辑。

尤其在使用spring时,会有很多外部的代理调用,等你每个都想看明白后,就不知道原调用处在做什么了。

更多的可能是我的大脑缓存不够吧。
0
0
分享到:
评论
3 楼 u013146595 2018-02-02  
楼主你人呢,搬家了吗。还想看你的文章
2 楼 cry615 2013-12-03  
广度优先可以站在宏观的角度,可能更有效率些!
1 楼 oolala 2011-09-30  
广度优先其实是为了更好的理解业务流程,把业务流程理解了,再理解有些小的业务流程

相关推荐

    深度优先和广度优先遍历图算法

    本源文件CPP中代码使用深度优先和广度优先遍历图的算法。

    图的存储与深度优先与广度优先遍历

    ### 图的存储与深度优先与广度优先遍历 #### C++实现的图的存储结构 在本篇文章中,我们将探讨图数据结构的存储方法及其两种主要的遍历算法:深度优先搜索(DFS)和广度优先搜索(BFS)。图是一种非线性的数据结构...

    图的深度优先和广度优先搜索动态演示图3张

    图的深度优先搜索(DFS, Depth-First Search)和广度优先搜索(BFS, Breadth-First Search)是图论中的两种基本遍历算法,它们在计算机科学中有着广泛的应用,例如在解决网络爬虫、迷宫求解、社交网络分析等问题时。...

    邻接表或者邻接矩阵为存储结构实现连通无向图的深度优先和广度优先遍历

    在这个程序设计任务中,我们需要实现的是连通无向图的深度优先遍历(DFS)和广度优先遍历(BFS),这两种遍历方法是图算法的基础。无向图指的是图中的边没有方向,即任意两个节点之间可以双向连接。 1. **邻接表和...

    C++无向图深度优先和广度优先遍历(编译可运行).rar

    以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集。 注: 1.代码共182行。 2.代码经过多次编译运行,无错误。

    C语言实现:八数码问题的深度优先搜索、广度优先搜索、过程表示(全)

    ①使用深度优先搜索来解决八数码问题 ②使用广度优先搜索来解决八数码问题 ③使用过程式表示和实现八数码问题 以及相关代码详细注释 过程式知识表示是将有关某一问题领域的知识, 连同如何使用这些知识的方法,均...

    图的深度优先和广度优先算法

    图的深度优先搜索(DFS, Depth First Search)和广度优先搜索(BFS, Breadth First Search)是图论中的两种基本搜索算法,用于遍历或搜索树或图。这两种算法在解决各种问题时有着广泛的应用,如寻找最短路径、判断...

    二叉树的深度优先搜索与广度优先搜索实现

    二叉树的深度优先搜索与广度优先搜索实现 二叉树搜索是计算机科学中的一种常见的搜索算法,用于遍历二叉树中的所有节点。二叉树搜索可以分为深度优先搜索和广度优先搜索两种方式。本文将详细介绍二叉树的深度优先...

    图的遍历,包括深度优先和广度优先遍历

    在这个主题下,我们将深入探讨深度优先遍历(DFS, Depth First Search)和广度优先遍历(BFS, Breadth First Search),以及在树结构中常见的先序、中序和后序遍历。这些遍历方法各有其特点,适用于不同的问题场景。...

    深度广度优先搜索代码

    深度优先搜索、广度优先搜索实验C++代码 int visited[Maxsize]={0}; struct ArcNode//弧的结点结构 { int adjvex;//该弧所指向的顶点的位置 struct ArcNode *nextarc;//指向下一条弧的指针 InfoType info;//该弧...

    图的深度、广度优先遍历(c语言)

    本文将详细介绍如何在C语言中实现图的深度优先遍历(DFS)和广度优先遍历(BFS)。这两种遍历方法是图论中最基本且重要的算法之一,在解决实际问题时有着广泛的应用场景,比如网络路由选择、地图导航、社交网络分析...

    深度优先及广度优先算法c语言源码

    深度优先及广度优先算法c语言源码,深度优先及广度优先算法c语言源码

    图的创立数据结构对其进行深度优先遍历和广度优先遍历

    总结来说,这段代码提供了创建邻接表表示的无向图的方法,以及从任意顶点出发的深度优先遍历和广度优先遍历算法。这些工具对于理解和操作图数据结构,如路径查找、连通性分析等,都是非常有用的。

    图的广度优先,深度优先算法 c语言描述

    图的遍历是图论中的基础操作,主要分为两种经典的搜索策略:广度优先搜索(Breadth-First Search, BFS)和深度优先搜索(Depth-First Search, DFS)。这两种算法在解决各种图相关的实际问题中起着至关重要的作用,如...

    图的深度、广度优先遍历(c语言).rar

    在这个压缩包中,包含了一个用C语言实现的程序,用于执行图的深度优先遍历(DFS, Depth-First Search)和广度优先遍历(BFS, Breadth-First Search)。以下是这两个遍历方法的详细解释: 1. **深度优先遍历(DFS)*...

    深度优先遍历 广度优先遍历 Dijikstta

    以上代码中,`dfs`函数实现了深度优先遍历,`bfs`函数实现了广度优先遍历,而`dijkstra`函数则实现了Dijkstra算法。请注意,这个例子是简化的,实际应用中可能需要考虑更复杂的情况,如处理带权重的边、优化空间效率...

    图的深度优先和广度优先遍历源码

    本资料包含的是Java实现的图的深度优先遍历(DFS, Depth First Search)和广度优先遍历(BFS, Breadth First Search)的源码,方便开发者直接运行和学习。 深度优先遍历是从一个顶点出发,尽可能深地搜索图的分支。...

    迷宫问题的算法(优于广度优先,深度优先.zip_广度优先_深度优先_深度广度_迷宫问题

    通常,这个问题可以通过算法来解决,其中两种最常用的方法是广度优先搜索(BFS)和深度优先搜索(DFS)。在本资料中,我们将深入探讨这两种方法,并比较它们在解决迷宫问题时的优劣。 首先,让我们来看看广度优先...

    图的建立及深度优先遍历和广度优先遍历

    根据给定文件的信息,我们可以总结出以下几个主要的知识点: ### 1. 图的定义与表示 ...以上就是关于图的建立及深度优先遍历和广度优先遍历的主要知识点。通过理解这些概念,可以帮助我们更好地分析和解决问题。

    深度优先搜索算法和广度优先搜索算法

    深度优先搜索算法更适合用于解决图的深度遍历问题,而广度优先搜索算法更适合用于解决图的层次遍历问题。 深度优先搜索算法的优点包括: * 实现简单 * 时间复杂度低 * 空间复杂度低 深度优先搜索算法的缺点包括:...

Global site tag (gtag.js) - Google Analytics