The Function Window

The function window does provide a very convenient way to view different parts of a program side by side, by simply calling up two windows of different groups. One situation in which this is very useful is when there is a particular line of code which modifies a particular data structure with a function, and you are interested in seeing which other functions can be used to modify other aspects of the data structure. Because other relevant functions will most probably be placed in the same group as the original function, it is easy to see quickly what options other programmers have presented you with.

The colour-coding of functions according to call dependency is rather less clear and less intuitive than a system that displays a physical arc between nodes. This is much more difficult to implement, because of the difficulty of drawing arcs between windows, and must be balanced against the benefit of using separate windows for different groups, which is extremely useful for reducing groups to a single icon and then restoring them when you want to focus on a particular region. I has originally considered a system in which subgroups, when expanded, were displayed as subwindows of the parent - that is, clipped by the parent window so that the subwindow appears to be inside the parent window just like the original icon. This turned out to be impossible to implement with xview. The advantage of the system I eventually implemented is that it provides extra freedom in arranging windows around the screen, so that, for example, function windows can be placed next to associated code windows.

One of the best aspects of my program is, I feel, the code window, which enables the user to quickly bring up a particular function, and only that function. Although the spatial proximity of functions within a file is a useful guide to finding other relevant information, it is very limiting, and it is annoying having to scroll through hundreds of lines of code looking for a particular function, or having to type a search string. I have noticed when programming that when a function is displayed on the screen, and there is a few lines from another function displayed at the top, those irrelevant lines can be quite distracting and confusing. The code window of the navigator solves this problem, and displays code much more neatly. Furthermore, the hierarchy that the function window presents enables the user to reach the code of any function with just a few mouse clicks, avoiding the necessity to scroll through pages of irrelevant data, all of which must be processed by the programmer and assessed for relevance.

Matthew Exon 2004-05-28