Code Review 2

The goal for this round of reviews is to discuss the most significant modifications made to each project, and how these modifications improved its design. We will review two projects in each class. First, the project developers will describe the major changes they made, and why. Then other students will offer their perspectives on the changes.

Presenters

You should spend about 10-15 minutes to address one of the topics described below. Describe the most significant changes you made in Project 2 related to that topic. For each change, first describe what you did for Project 1, along with the problems that motivated your changes. Then describe the changes you made for Project 2, and why they are an improvement. If there are still problems with the version from Project 2, discuss those along with any ideas you have for how they might be fixed.

If there is some other change you made for Project 2 that doesn't fit under the assigned topic, but which you think is particularly interesting, you may also describe that briefly, after discussing your assigned topic.

Your challenge as presenters is to provide useful information even to class members who have not read your project. The best way to accomplish this is to be very specific: show code samples or API summaries from Project 1, along with the corresponding code/APIs from Project 2. In making your presentation, assume that the audience has not looked at any of your code. Try to tie your changes back to overall ideas about software design.

Reviewers

Read over the code related to the assigned topic before class. You may use either the issue on cs190codereview.appspot.com or the repo on GitHub. First look at the changes file in order to learn about the major changes. Then read the relevant code and compare the versions from Project 1 and Project 2. Come to class prepared to address the following questions as they relate to the assigned topic:

Organize your review so that it can be appreciated even by students who have not read the code. Your comments will be most useful if they are specific: bring your laptop to class and display examples from the implementation both for things you like and for things you don't like. In addition, try to tie your review comments back to the major themes for software design.

Create an online code review with your key comments; it can include additional smaller issues that you won't have time to discuss in class. As in the past, wait to publish your code review until after the in-class discussion.

Review Topics

Each code review will focus on one of the topics described below:

Undo

For this topic, both presenters and reviewers should focus on the undo mechanism and how it connects to the other elements of the editor, such as text storage, selection/cursor management, and event handling. You should also discuss the mechanism for grouping undo actions. Is undo implemented in a generic fashion? Is the code for undoing the selection independent of the code for undoing text changes?

Display and Events

For this topic, focus on the mechanisms for displaying text on the screen and for handling events. How is this functionality split among classes? How are multiple windows handled? How do these classes communicate with undo and text management (e.g. how does each window know when it should redisplay itself, and how much to redisplay)?

Schedule

DateTopicPresentersReviewers
Wednesday, May 18UndoS. Li, ManStarosta, Walker, Gadangi, Y. Li
Broder, RodriguezPenkov, Pradhan, Charitsis
Friday, May 20Display/EventsGadangi, PradhanCharitsis, Penkov, Man, Broder
WalkerY. Li, Rodriguez, S. Li, Starosta
Monday, May 23UndoCharitsis, Y. LiBroder, Man, Pradhan
Penkov, StarostaS. Li, Gadangi, Walker, Rodriguez

Reviewers will present in the order listed above. Everyone should bring their laptop to class for the code reviews, both for your use in presenting, and also so that you can browse the code online while we are discussing it.