This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
hill:275 [2009/10/13 17:55] hill |
hill:275 [2009/10/13 18:45] hill |
||
---|---|---|---|
Line 34: | Line 34: | ||
- Create a new mind map about Software Engineering: | - Create a new mind map about Software Engineering: | ||
* Add children nodes by going to "Insert > New Child Node", hitting the "insert" key, or selecting the lightbulb {{:hill:bulb.png|}} | * Add children nodes by going to "Insert > New Child Node", hitting the "insert" key, or selecting the lightbulb {{:hill:bulb.png|}} | ||
- | * Add at least 5 nodes, with some at least 3 levels deep | + | * Add at least 3 levels of children, with at least 2 children per level |
* Save the mind map | * Save the mind map | ||
- Select a middle node (not leaf or root) and attempt to fold it. There are 3 ways to change a node's folding status: | - Select a middle node (not leaf or root) and attempt to fold it. There are 3 ways to change a node's folding status: | ||
Line 43: | Line 43: | ||
===== Using the type & call hierarchy to understand code ===== | ===== Using the type & call hierarchy to understand code ===== | ||
+ | |||
+ | ==== Call Hierarchy ==== | ||
+ | |||
+ | The call hierarchy shows calling relationships between methods in a program. For example: | ||
+ | |||
+ | * Navigate to the method ''toggleFolded(ListIterator listIterator)'' in class ''freemind.modes.minmapmode.actions.ToggleFoldedAction'' | ||
+ | * Right click the method name and select "Open Call Hierarchy" | ||
+ | * Look at the callers {{:hill:callers.png|}} and callees {{:hill:callees.png|}} | ||
+ | * Going back to the callers, expand ''toggleFolded'' & ''toggleFolded'' again. Look at the callers of ''actionPerformed''. | ||
+ | * Try looking at the callers of other methods, such as ''nameSetFolded'' | ||
+ | |||
+ | //**What information does the call hierarchy give you? Why is it useful for understanding a program?**// | ||
+ | |||
+ | ==== Type Hierarchy ==== | ||
+ | |||
+ | The type hierarchy shows how types are related. For example: | ||
+ | |||
+ | * Right click in the editor window for ''ToggleFoldedAction'' and select "Open Type Hierarchy" | ||
+ | * Right click on ''AbstractAction'' and select "Focus On 'AbstractAction'" | ||
+ | |||
+ | //**What information does the type hierarchy give you? Why is it useful for understanding a program?**// | ||
+ | |||
+ | |||
+ | **Exercise:** Show me an interesting call hierarchy and type hierarchy on **your** project code ("interesting" = more than 3 nodes) | ||
===== Basic Refactoring ===== | ===== Basic Refactoring ===== | ||
+ | |||
+ | //**What is refactoring? Why use it?**// | ||
+ | |||
+ | ==Rename== | ||
+ | * Right click on ''toggleFolded'' and select "Refactor > Rename" | ||
+ | * Add your name at the end of ''toggleFolded'' | ||
+ | * Verify your change is complete by looking at the call hierarchy & double clicking the callers | ||
+ | |||
+ | //**Why rename?**// | ||
+ | |||
+ | ==Extract Method== | ||
+ | * In the renamed ''toggleFolded'', select the 3 statements (6 lines) starting with ''modeController.getAction...'' | ||
+ | * Right click & select "Refactor > Extract Method" | ||
+ | * Enter a name (e.g., "initiateToggleAction") and hit enter | ||
+ | |||
+ | //**Why extract methods?**// | ||
===== Debugging in Eclipse ===== | ===== Debugging in Eclipse ===== | ||
+ | |||
+ | |||
+ | * **Exercise:** Show me a debugging trace for ''toggleFolded''. Which method calls in the trace do you think handle your input method (click, space, right click, etc.)? | ||