改进函数、变量的表示

现时仅仅利用圆点表示函数和变量

同样一个类,当前效果与先前效果对比。

当前对类内部元素布局的进一步思考:

(1)类内部必须能够看到所有元素。但可以提供某种筛选策略,例如只显示函数、只显示变量。

(2)函数调用、变量依赖这两种边是有用的。但必须有有效的筛选。简单的筛选可以只显示函数调用或者变量依赖。复杂的筛选可以基于各种关系逐步显示。

(3)当前下图的布局与之前相比,好处是视觉元素已经比较单一,只有节点和边,而且可以从颜色知道有两类节点。

问题一 是变量与函数的区分不明确,用户一开始不知道哪种节点是变量,哪种是函数。这一点可以通过加入图例来解决。但与此相关的是,随着之后添加的信息越来越多,这两种节点必须保持相当的区分度。例如绿色的始终变量,米色的始终是函数,而用其他相对不明显的编码,例如形状、大小、边框粗细去表示代码量等其他信息。

问题二 边的布局尽管相比之前有改进,但是仍然有太多的重叠现象。例如图中picker和selected_vertices变量就看不出其究竟与那些函数有关联。尽管利用选择、鼠标悬停等策略,仍然可以知道具体的路线,但用户不容易一眼分辨出变量的主次。

 

来自为知笔记(Wiz)

时间: 2024-11-10 07:14:20

改进函数、变量的表示的相关文章

用 PHP 函数变量数组改变代码结构

项目越做越大,代码越来越乱,维护困难.原因很多吧.起初为了实现功能,并没有注重代码的结构,外包公司嘛.虽然公司的项目负责人一直考虑复用.封装,但是我觉得基本上没有达到想要的效果.因为整个代码中没有没有用到设计模式,这样结构肯定好不到哪去.虽然很多功能都封装了,但是分层特别的乱,有种为了封装而封装的感觉.其实,很多东西我也不懂,但是写完代码之后,偶尔还是会去把代码的结构稍微的修改修改,尽量的少给自己挖坑吧. 代码结构的问题 接口有大量的方法,调用接口时需要使用 switch 进行判断,大致结构如下

探究javascript对象和数组的异同,及函数变量缓存技巧

javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来存储数据有什么不同.于是,我打算探究探究. 一.掌握三种数据类型 首先,一个前提必须掌握的,就是必须理解javascript的数据类型分类,主要分为以下三种: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二

JavaScript-4.2函数,变量作用域---ShinePans

<html> <head> <meta http-equiv="content-type" content="text/html;charset=GB2312"/> <title> 4.2 函数和变量作用域 </title> <!--脚本部分--> <script type="text/javascript"> var v1,v2; v1=10; v2=20; f

C++中函数变量布局小结

把布局作为一种信仰(Layout as Religion).                                                                                                                    --Steve McConnell(<代码大全>一书作者)        在 C 语言的早期版本中,由于规定变量的赋值必须在所有变量的声明之前,因此经常能看到如下形式的代码:           void

c 变量的存储类型auto等(基础知识)和c函数变量

总结 1).在c语言中每一个变量和函数有两个属性:数据类型和数据的存储类别. 2). 对数据型(如整型.字符型等).存储类别指的是数据在内存中存储的方式. 存储方式分为两大类: 静态存储类和动态存储类 具体包括四种:{自动的(auto), 静态的(static), 寄存器(register), 外部的(extern)}. 根据变量的存储类别, 可以知道变量的作用域和生存期. 例如: 局部变量: 自动变量: int main(void){int a, b, c; 自动变量} 静态局部变量: int

python 函数变量查找顺序

python 函数变量的查找顺序:优先级为: 局部---> 全局---> 如果仍没找到,将引发NameError错误. #!/usr/bin/env python #coding:utf-8 #@Author:Andy # Date: 2017/6/14 money = 1000 def tell_info(name): print("%s have %d " % (name, money)) def fun(): money = 10 tell_info('egon')

javascript 闭包与函数变量作用域

浏览器事件循环工作原理 浏览器有一个事件循环用于检查事件队列,处理延时的事件.UI事件(例如:点击,滚动等),ajax回调,以及提供给setTimeout()和setInterval()的回调,都会依次被事件循环处理. 因此,当调用setTimeout()函数时,即使延迟的时间被设置为0,提供的回调也会被排队 回调会呆在队列中,直到指定的时间用完后,引擎开始执行动作(如果它当前不执行其他动作) 因此,即使setTimeout()回调被延迟0ms,它仍然会被排队,并且直到函数中其他非延迟的语句被执

Python:函数变量的使用

1.上层函数不能直接使用其嵌套函数的变量: def func1(x, y): z = x + y def func2(): m = 3 z += m return z print(func1(1, 2)) # 报错:name 'm' is not defined 2.上层函数中的变量可以在其嵌套函数内直接使用: def func1(x, y): z = x + y def func2(): m = 3 + z return m return func2() print(func1(1, 2))

Golang理解-函数变量

函数变量 函数作为变量值 函数变量是把函数作为值保存到变量中. 在Golang中,,函数也是一种类型,可以和其他类型一样被保存在变量中.例如: package main // 将函数作为值保存到变量中 import ( "fmt" ) func fire() { fmt.Println("fire") } func main(){ f := fire() // 将变量f声明为func()类型,此时f就被俗称为"回调函数", 此时f的值为nil f