<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sjames3</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sjames3"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Sjames3"/>
	<updated>2026-07-02T15:37:41Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91356</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91356"/>
		<updated>2014-10-31T17:01:15Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;)&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Don%27t_Repeat_Yourself&amp;lt;/ref&amp;gt; principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_participants&lt;br /&gt;
| Removed more complex version of two duplicate functions.&lt;br /&gt;
| Adherence to the DRY principle.&lt;br /&gt;
|-&lt;br /&gt;
| add_member&lt;br /&gt;
| Renamed to 'add_participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to 'copy_participants'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for team in teams ... end' to 'teams.each { |team| ... }'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for i in 1..no_of_teams' to '(1..no_of_teams).each { |i|'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: assignment_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_first_member&lt;br /&gt;
| Renamed to get_first_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| includes?&lt;br /&gt;
| Renamed to has_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| get_participants&lt;br /&gt;
| Renamed to participants&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_by_id&lt;br /&gt;
| Renamed to delete&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_contributor?&lt;br /&gt;
| Changed logic from '(...) == false' to '!(...)'&lt;br /&gt;
| Legibility.&lt;br /&gt;
|-&lt;br /&gt;
| get_hyperlinks&lt;br /&gt;
| Renamed team_member local variable to 'participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: course_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to copy_participants&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Considerations for Future Work=&lt;br /&gt;
* The import/export functionality for different team participants could be combined and simplified. This responsibility could probably be broken out into separate classes so that this responsiblity is encapsulated better.&lt;br /&gt;
* Rather than extending the Team class to create separate classes to capture related functionality when teams are associated with assignments or courses, it might be better to just associate teams with courses or assignments directly and then delegate related functionality (like importing/exporting data) to separate helper classes.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
* The renaming and refactoring was performed as suggested in the given requirements. These changes helped enforce consistency and common conventions.&lt;br /&gt;
* Some common functionality was combined to adhere to the DRY principle.&lt;br /&gt;
* Methods were grouped and organized within their model classes to make them easier to read and mentally consume, and to suggest groups of responsibilities for potential future work.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
* '''OSS - E1452 project on GitHub:''' https://github.com/sjames3/expertiza&lt;br /&gt;
* '''Expertiza Project Documentation:''' http://wikis.lib.ncsu.edu/index.php/Expertiza&lt;br /&gt;
* '''Working Expertiza Site:''' http://expertiza.ncsu.edu/&lt;br /&gt;
* '''Expertiza on GitHub:''' https://github.com/expertiza/expertiza&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91355</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91355"/>
		<updated>2014-10-31T17:00:57Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;)&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Don%27t_Repeat_Yourself&amp;lt;/ref&amp;gt; principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_participants&lt;br /&gt;
| Removed more complex version of two duplicate functions.&lt;br /&gt;
| Adherence to the DRY principle.&lt;br /&gt;
|-&lt;br /&gt;
| add_member&lt;br /&gt;
| Renamed to 'add_participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to 'copy_participants'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for team in teams ... end' to 'teams.each { |team| ... }'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for i in 1..no_of_teams' to '(1..no_of_teams).each { |i|'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: assignment_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_first_member&lt;br /&gt;
| Renamed to get_first_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| includes?&lt;br /&gt;
| Renamed to has_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| get_participants&lt;br /&gt;
| Renamed to participants&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_by_id&lt;br /&gt;
| Renamed to delete&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_contributor?&lt;br /&gt;
| Changed logic from '(...) == false' to '!(...)'&lt;br /&gt;
| Legibility.&lt;br /&gt;
|-&lt;br /&gt;
| get_hyperlinks&lt;br /&gt;
| Renamed team_member local variable to 'participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: course_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to copy_participants&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Considerations for Future Work=&lt;br /&gt;
* The import/export functionality for different team participants could be combined and simplified. This responsibility could probably be broken out into separate classes so that this responsiblity is encapsulated better.&lt;br /&gt;
* Rather than extending the Team class to create separate classes to capture related functionality when teams are associated with assignments or courses, it might be better to just associate teams with courses or assignments directly and then delegate related functionality (like importing/exporting data) to separate helper classes.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
* The renaming and refactoring was performed as suggested in the given requirements. These changes helped enforce consistency and common conventions.&lt;br /&gt;
* Some common functionality was combined to adhere to the DRY principle.&lt;br /&gt;
* Methods were grouped and organized within their model classes to make them easier to read and mentally consume, and to suggest groups of responsibilities for potential future work.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
* '''OSS - E1452 project on GitHub:''' https://github.com/sjames3/expertiza&lt;br /&gt;
* '''Expertiza project documentation:''' http://wikis.lib.ncsu.edu/index.php/Expertiza&lt;br /&gt;
* '''Working Expertiza site:''' http://expertiza.ncsu.edu/&lt;br /&gt;
* '''Expertiza on GitHub:''' https://github.com/expertiza/expertiza&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91354</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91354"/>
		<updated>2014-10-31T17:00:06Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;)&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Don%27t_Repeat_Yourself&amp;lt;/ref&amp;gt; principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_participants&lt;br /&gt;
| Removed more complex version of two duplicate functions.&lt;br /&gt;
| Adherence to the DRY principle.&lt;br /&gt;
|-&lt;br /&gt;
| add_member&lt;br /&gt;
| Renamed to 'add_participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to 'copy_participants'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for team in teams ... end' to 'teams.each { |team| ... }'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for i in 1..no_of_teams' to '(1..no_of_teams).each { |i|'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: assignment_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_first_member&lt;br /&gt;
| Renamed to get_first_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| includes?&lt;br /&gt;
| Renamed to has_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| get_participants&lt;br /&gt;
| Renamed to participants&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_by_id&lt;br /&gt;
| Renamed to delete&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_contributor?&lt;br /&gt;
| Changed logic from '(...) == false' to '!(...)'&lt;br /&gt;
| Legibility.&lt;br /&gt;
|-&lt;br /&gt;
| get_hyperlinks&lt;br /&gt;
| Renamed team_member local variable to 'participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: course_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to copy_participants&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Considerations for Future Work=&lt;br /&gt;
* The import/export functionality for different team participants could be combined and simplified. This responsibility could probably be broken out into separate classes so that this responsiblity is encapsulated better.&lt;br /&gt;
* Rather than extending the Team class to create separate classes to capture related functionality when teams are associated with assignments or courses, it might be better to just associate teams with courses or assignments directly and then delegate related functionality (like importing/exporting data) to separate helper classes.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
* The renaming and refactoring was performed as suggested in the given requirements. These changes helped enforce consistency and common conventions.&lt;br /&gt;
* Some common functionality was combined to adhere to the DRY principle.&lt;br /&gt;
* Methods were grouped and organized within their model classes to make them easier to read and mentally consume, and to suggest groups of responsibilities for potential future work.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
* OSS - E1452 project on GitHub https://github.com/sjames3/expertiza&lt;br /&gt;
* Expertiza project documentation can be found at http://wikis.lib.ncsu.edu/index.php/Expertiza&lt;br /&gt;
* The working Expertiza site is accessible at link http://expertiza.ncsu.edu/&lt;br /&gt;
* Expertiza on GitHub https://github.com/expertiza/expertiza&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91353</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91353"/>
		<updated>2014-10-31T16:58:26Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;[http://en.wikipedia.org/wiki/Don%27t_Repeat_Yourself Don't Repeat Yourself]&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_participants&lt;br /&gt;
| Removed more complex version of two duplicate functions.&lt;br /&gt;
| Adherence to the DRY principle.&lt;br /&gt;
|-&lt;br /&gt;
| add_member&lt;br /&gt;
| Renamed to 'add_participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to 'copy_participants'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for team in teams ... end' to 'teams.each { |team| ... }'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for i in 1..no_of_teams' to '(1..no_of_teams).each { |i|'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: assignment_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_first_member&lt;br /&gt;
| Renamed to get_first_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| includes?&lt;br /&gt;
| Renamed to has_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| get_participants&lt;br /&gt;
| Renamed to participants&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_by_id&lt;br /&gt;
| Renamed to delete&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_contributor?&lt;br /&gt;
| Changed logic from '(...) == false' to '!(...)'&lt;br /&gt;
| Legibility.&lt;br /&gt;
|-&lt;br /&gt;
| get_hyperlinks&lt;br /&gt;
| Renamed team_member local variable to 'participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: course_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to copy_participants&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Considerations for Future Work=&lt;br /&gt;
* The import/export functionality for different team participants could be combined and simplified. This responsibility could probably be broken out into separate classes so that this responsiblity is encapsulated better.&lt;br /&gt;
* Rather than extending the Team class to create separate classes to capture related functionality when teams are associated with assignments or courses, it might be better to just associate teams with courses or assignments directly and then delegate related functionality (like importing/exporting data) to separate helper classes.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
* The renaming and refactoring was performed as suggested in the given requirements. These changes helped enforce consistency and common conventions.&lt;br /&gt;
* Some common functionality was combined to adhere to the DRY principle.&lt;br /&gt;
* Methods were grouped and organized within their model classes to make them easier to read and mentally consume, and to suggest groups of responsibilities for potential future work.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
* OSS - E1452 project on GitHub https://github.com/sjames3/expertiza&lt;br /&gt;
* Expertiza project documentation can be found at http://wikis.lib.ncsu.edu/index.php/Expertiza&lt;br /&gt;
* The working Expertiza site is accessible at link http://expertiza.ncsu.edu/&lt;br /&gt;
* Expertiza on GitHub https://github.com/expertiza/expertiza&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91352</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91352"/>
		<updated>2014-10-31T16:55:43Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_participants&lt;br /&gt;
| Removed more complex version of two duplicate functions.&lt;br /&gt;
| Adherence to the DRY principle.&lt;br /&gt;
|-&lt;br /&gt;
| add_member&lt;br /&gt;
| Renamed to 'add_participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to 'copy_participants'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for team in teams ... end' to 'teams.each { |team| ... }'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for i in 1..no_of_teams' to '(1..no_of_teams).each { |i|'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: assignment_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_first_member&lt;br /&gt;
| Renamed to get_first_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| includes?&lt;br /&gt;
| Renamed to has_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| get_participants&lt;br /&gt;
| Renamed to participants&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_by_id&lt;br /&gt;
| Renamed to delete&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_contributor?&lt;br /&gt;
| Changed logic from '(...) == false' to '!(...)'&lt;br /&gt;
| Legibility.&lt;br /&gt;
|-&lt;br /&gt;
| get_hyperlinks&lt;br /&gt;
| Renamed team_member local variable to 'participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: course_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to copy_participants&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Considerations for Future Work=&lt;br /&gt;
* The import/export functionality for different team participants could be combined and simplified. This responsibility could probably be broken out into separate classes so that this responsiblity is encapsulated better.&lt;br /&gt;
* Rather than extending the Team class to create separate classes to capture related functionality when teams are associated with assignments or courses, it might be better to just associate teams with courses or assignments directly and then delegate related functionality (like importing/exporting data) to separate helper classes.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
* The renaming and refactoring was performed as suggested in the given requirements. These changes helped enforce consistency and common conventions.&lt;br /&gt;
* Some common functionality was combined to adhere to the DRY principle.&lt;br /&gt;
* Methods were grouped and organized within their model classes to make them easier to read and mentally consume, and to suggest groups of responsibilities for potential future work.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91351</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91351"/>
		<updated>2014-10-31T16:53:13Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Considerations for Future Work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_participants&lt;br /&gt;
| Removed more complex version of two duplicate functions.&lt;br /&gt;
| Adherence to the DRY principle.&lt;br /&gt;
|-&lt;br /&gt;
| add_member&lt;br /&gt;
| Renamed to 'add_participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to 'copy_participants'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for team in teams ... end' to 'teams.each { |team| ... }'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for i in 1..no_of_teams' to '(1..no_of_teams).each { |i|'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: assignment_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_first_member&lt;br /&gt;
| Renamed to get_first_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| includes?&lt;br /&gt;
| Renamed to has_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| get_participants&lt;br /&gt;
| Renamed to participants&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_by_id&lt;br /&gt;
| Renamed to delete&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_contributor?&lt;br /&gt;
| Changed logic from '(...) == false' to '!(...)'&lt;br /&gt;
| Legibility.&lt;br /&gt;
|-&lt;br /&gt;
| get_hyperlinks&lt;br /&gt;
| Renamed team_member local variable to 'participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: course_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to copy_participants&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Considerations for Future Work=&lt;br /&gt;
* The import/export functionality for different team participants could be combined and simplified. This responsibility could probably be broken out into separate classes so that this responsiblity is encapsulated better.&lt;br /&gt;
* Rather than extending the Team class to create separate classes to capture related functionality when teams are associated with assignments or courses, it might be better to just associate teams with courses or assignments directly and then delegate related functionality (like importing/exporting data) to separate helper classes.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91350</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91350"/>
		<updated>2014-10-31T16:49:36Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_participants&lt;br /&gt;
| Removed more complex version of two duplicate functions.&lt;br /&gt;
| Adherence to the DRY principle.&lt;br /&gt;
|-&lt;br /&gt;
| add_member&lt;br /&gt;
| Renamed to 'add_participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to 'copy_participants'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for team in teams ... end' to 'teams.each { |team| ... }'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
| delete_all_by_parent&lt;br /&gt;
| Changed logic from 'for i in 1..no_of_teams' to '(1..no_of_teams).each { |i|'&lt;br /&gt;
| Consistency in accessing collection members.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: assignment_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_first_member&lt;br /&gt;
| Renamed to get_first_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| includes?&lt;br /&gt;
| Renamed to has_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| get_participants&lt;br /&gt;
| Renamed to participants&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_by_id&lt;br /&gt;
| Renamed to delete&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_contributor?&lt;br /&gt;
| Changed logic from '(...) == false' to '!(...)'&lt;br /&gt;
| Legibility.&lt;br /&gt;
|-&lt;br /&gt;
| get_hyperlinks&lt;br /&gt;
| Renamed team_member local variable to 'participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: course_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to copy_participants&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Considerations for Future Work=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91349</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91349"/>
		<updated>2014-10-31T16:43:35Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* CourseTeam Model: course_team.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_first_member&lt;br /&gt;
| Renamed to get_first_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| includes?&lt;br /&gt;
| Renamed to has_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| get_participants&lt;br /&gt;
| Renamed to participants&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_by_id&lt;br /&gt;
| Renamed to delete&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_contributor?&lt;br /&gt;
| Changed logic from '(...) == false' to '!(...)'&lt;br /&gt;
| Legibility.&lt;br /&gt;
|-&lt;br /&gt;
| get_hyperlinks&lt;br /&gt;
| Renamed team_member local variable to 'participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: course_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| copy_members&lt;br /&gt;
| Renamed to copy_participants&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Considerations for Future Work=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91348</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91348"/>
		<updated>2014-10-31T16:42:26Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* AssignmentTeam Model: AssignmentTeam.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_first_member&lt;br /&gt;
| Renamed to get_first_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| includes?&lt;br /&gt;
| Renamed to has_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| get_participants&lt;br /&gt;
| Renamed to participants&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_by_id&lt;br /&gt;
| Renamed to delete&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_contributor?&lt;br /&gt;
| Changed logic from '(...) == false' to '!(...)'&lt;br /&gt;
| Legibility.&lt;br /&gt;
|-&lt;br /&gt;
| get_hyperlinks&lt;br /&gt;
| Renamed team_member local variable to 'participant'&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: course_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Considerations for Future Work=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91347</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91347"/>
		<updated>2014-10-31T16:38:32Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* CourseTeam Model: CourseTeam.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_first_member&lt;br /&gt;
| Renamed to get_first_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| includes?&lt;br /&gt;
| Renamed to has_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| get_participants&lt;br /&gt;
| Renamed to participants&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_by_id&lt;br /&gt;
| Renamed to delete&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: course_team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Considerations for Future Work=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91346</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91346"/>
		<updated>2014-10-31T16:36:36Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* AssignmentTeam Model: AssignmentTeam.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_first_member&lt;br /&gt;
| Renamed to get_first_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| includes?&lt;br /&gt;
| Renamed to has_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| get_participants&lt;br /&gt;
| Renamed to participants&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_by_id&lt;br /&gt;
| Renamed to delete&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Considerations for Future Work=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91345</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91345"/>
		<updated>2014-10-31T16:36:03Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* AssignmentTeam Model: AssignmentTeam.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| get_first_member&lt;br /&gt;
| Renamed to get_first_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| includes?&lt;br /&gt;
| Renamed to has_participant&lt;br /&gt;
| Enforce consistency in how we refer to users in a team.&lt;br /&gt;
|-&lt;br /&gt;
| get_participants&lt;br /&gt;
| Renamed to participants&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
| create_team_and_node&lt;br /&gt;
| Renamed to create&lt;br /&gt;
| Enforce consistency in how we name Ruby functions.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Considerations for Future Work=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91343</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91343"/>
		<updated>2014-10-31T02:57:33Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Scope for future work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Considerations for Future Work=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91342</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91342"/>
		<updated>2014-10-31T02:57:20Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* AssignmentTeam Model: AssignmentTeam.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Scope for future work=&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91341</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91341"/>
		<updated>2014-10-31T02:57:15Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* CourseTeam Model: CourseTeam.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Scope for future work=&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91340</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91340"/>
		<updated>2014-10-31T02:57:01Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Team Model: Team.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
| ..&lt;br /&gt;
| ...&lt;br /&gt;
| ....&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
=Scope for future work=&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91339</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91339"/>
		<updated>2014-10-31T02:56:32Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Team Model: Team.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:13%;&amp;quot;|Method Name&lt;br /&gt;
! style=&amp;quot;width:33%;&amp;quot;|Changes Made &lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Reason For Change&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| able_to_submit&lt;br /&gt;
| It has been commented out.&lt;br /&gt;
| Method not called or used anywhere. Also the method just returned the value of the attribute submit_allowed which is already taken care of by attr_accessors.&lt;br /&gt;
|-&lt;br /&gt;
| force_delete&lt;br /&gt;
| The deprecated code in this method has been changed.&lt;br /&gt;
| To ensure the code works in future versions of Rails.&lt;br /&gt;
|-&lt;br /&gt;
| get_average_question_score&lt;br /&gt;
| Renamed to average_question_score and refactored.&lt;br /&gt;
| To conform to method naming convention.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
=Scope for future work=&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91338</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91338"/>
		<updated>2014-10-31T02:55:30Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Project Design and Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as high cohesion and low coupling.&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
=Scope for future work=&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91337</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91337"/>
		<updated>2014-10-31T02:23:20Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Project Design and Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
This project took a two-stage approach. The first stage involved renaming methods and variables, but largely avoiding invasive code changes that could have an impact on the functionality. The second stage separately made changes like merging or removing duplicate functions.&lt;br /&gt;
&lt;br /&gt;
Several main goals were kept in mind throughout this process:&lt;br /&gt;
# DRY&lt;br /&gt;
# Ruby naming conventions&lt;br /&gt;
# Project style conventions&lt;br /&gt;
# Good design cosiderations, such as:&lt;br /&gt;
#* High coupling, low cohesion&lt;br /&gt;
#*&lt;br /&gt;
&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
=Scope for future work=&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91336</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91336"/>
		<updated>2014-10-31T02:09:20Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
[[File:Writing 2 UML.png]]&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
=Scope for future work=&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Writing_2_UML.png&amp;diff=91335</id>
		<title>File:Writing 2 UML.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Writing_2_UML.png&amp;diff=91335"/>
		<updated>2014-10-31T02:08:54Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91334</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91334"/>
		<updated>2014-10-31T02:02:35Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* course_team.rb&lt;br /&gt;
* team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
=Scope for future work=&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91333</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91333"/>
		<updated>2014-10-31T01:59:16Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* AssignmentTeam.rb&lt;br /&gt;
* CourseTeam.rb&lt;br /&gt;
* Team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names. Some preliminary suggestions were run past the point of contact for this section of the codebase. They are summarized as follows:&lt;br /&gt;
&lt;br /&gt;
* The 'participants' and 'get_participants' methods in AssignmentTeam appear to have the same functionality, so these should be refactored into a single method.&lt;br /&gt;
* The 'create_team_and_node' method will be renamed to 'create' to better follow accepted Ruby conventions.&lt;br /&gt;
** A few other methods that could also be named better. For example, 'remove_team_by_id(id)' could be 'delete(id)'.&lt;br /&gt;
* The 'includes?' method will be renamed to 'has_participant?'&lt;br /&gt;
* There are some common responsibilities in both AssignmentTeam and CourseTeam, so that code will be pushed up into the superclass Team.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
=Scope for future work=&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91332</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91332"/>
		<updated>2014-10-31T01:56:18Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* AssignmentTeam.rb&lt;br /&gt;
* CourseTeam.rb&lt;br /&gt;
* Team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The AssignmentTeam and CourseTeam models, as sibling subclasses of the Team model, tended to share certain functionality. This assignment called for refactoring those classes to make them better conform to ruby convention and to support the DRY (&amp;quot;Don't Repeat Yourself&amp;quot;) principle of avoiding duplicate code.&lt;br /&gt;
&lt;br /&gt;
A quick skim of the code turned up a few places where the AssignmentTeam and CourseTeam models had similar functionality, as well as multiple methods and variables that needed better names.&lt;br /&gt;
&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
=Scope for future work=&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91331</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91331"/>
		<updated>2014-10-31T00:13:52Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Team Model: Team.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* AssignmentTeam.rb&lt;br /&gt;
* CourseTeam.rb&lt;br /&gt;
* Team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb=&lt;br /&gt;
&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
=Scope for future work=&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91330</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91330"/>
		<updated>2014-10-31T00:13:38Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* E1452: Refactoring AssignmentTeam and CourseTeam models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
* AssignmentTeam.rb&lt;br /&gt;
* CourseTeam.rb&lt;br /&gt;
* Team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
=Scope for future work=&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91329</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91329"/>
		<updated>2014-10-31T00:13:16Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
AssignmentTeam.rb&lt;br /&gt;
CourseTeam.rb&lt;br /&gt;
Team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
=Project Design and Approach=&lt;br /&gt;
=UML Class Diagram=&lt;br /&gt;
=Team Model: Team.rb=&lt;br /&gt;
=AssignmentTeam Model: AssignmentTeam.rb&lt;br /&gt;
=CourseTeam Model: CourseTeam.rb=&lt;br /&gt;
=Scope for future work=&lt;br /&gt;
=Conclusion=&lt;br /&gt;
=References=&lt;br /&gt;
=See Also=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91328</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91328"/>
		<updated>2014-10-31T00:10:49Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows:&lt;br /&gt;
 &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
AssignmentTeam.rb&lt;br /&gt;
CourseTeam.rb&lt;br /&gt;
Team.rb&lt;br /&gt;
&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
&lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91327</id>
		<title>CSC/ECE 517 Fall 2014/OSS E1452 slj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_E1452_slj&amp;diff=91327"/>
		<updated>2014-10-31T00:09:39Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: Created page with &amp;quot;=E1452: Refactoring AssignmentTeam and CourseTeam models= The requirements provided for the Open Source System project of Expertiza were as follows :  '''Classes:''' AssignmentTe...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=E1452: Refactoring AssignmentTeam and CourseTeam models=&lt;br /&gt;
The requirements provided for the Open Source System project of Expertiza were as follows : &lt;br /&gt;
'''Classes:'''&lt;br /&gt;
AssignmentTeam.rb&lt;br /&gt;
CourseTeam.rb&lt;br /&gt;
Team.rb&lt;br /&gt;
'''What they do:'''&lt;br /&gt;
The AssignmentTeam model checks whether a team has participants for an assignment, whether a topic has been picked by the team and reviews has be given for a particular team and adds, deletes and retrieves participants in a team.&lt;br /&gt;
The CourseTeam model gives the paticipants in a course and allows to add and delete participants in a course. This is for the use by the instructor. &lt;br /&gt;
'''What is needed:'''&lt;br /&gt;
Check if we need two methods participant and get_participant as they may be similar. If so, refactor to make one method.&lt;br /&gt;
Rename create_team_and_node method as create method (follow Ruby style)&lt;br /&gt;
Rename includes? method to has_participant?&lt;br /&gt;
Remove duplicate code from these 2 sublcasses of Team.&lt;br /&gt;
Assignment_Team class too long (235 lines)&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89389</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89389"/>
		<updated>2014-10-07T02:35:07Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Examples of Refactoring Browsers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-paste the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A side-by-side comparison of a Smalltalk refactoring browser&amp;lt;ref&amp;gt;[http://onsmalltalk.com/on-the-smalltalk-browser &amp;quot;On the Smalltalk Browser&amp;quot;], ''On Smalltalk''. 17 June 2007. Accessed 6 October 2014.&amp;lt;/ref&amp;gt; and the modern Eclipse Java 'browsing perspective'&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;&amp;gt;[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Browsing.htm &amp;quot;Using the Java Browsing Perspective&amp;quot;], ''Eclipse documentation - Current Release''. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make an egregious mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort of class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
Almost all major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&amp;lt;ref&amp;gt;[http://blog.ittybittyapps.com/blog/2013/09/24/refactoring-in-xcode-5/ &amp;quot;Refactoring in Xcode 5&amp;quot;], ''Itty Bitty Labs''. 24 September 2013. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Cincom Smalltalk&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;/&amp;gt;&lt;br /&gt;
* Embarcadero Delphi&amp;lt;ref&amp;gt;[http://www.modelmakertools.com/code-explorer/index.html &amp;quot;ModelMaker Code Explorer&amp;quot;], ''ModelMaker Tools''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&amp;lt;ref&amp;gt;[http://www.tlcc.com/admin/tips.nsf/0/C9408FEF495D6AD985256E40005172AA &amp;quot;Refactor your Java Code in WebSphere Studio&amp;quot;], ''The Learning Continuum Company''. 23 February 2004. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* IntelliJ IDEA&amp;lt;ref&amp;gt;[http://www.jetbrains.com/idea/webhelp/refactoring-source-code.html &amp;quot;Refactoring Source Code&amp;quot;], ''IntelliJ IDEA 13.1.0 Web Help''. 4 July 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* KDevelop&amp;lt;ref&amp;gt;[http://zwabel.wordpress.com/2008/11/05/kdevelop4-now-with-refactoring/ &amp;quot;KDevelop4: Now with refactoring!&amp;quot;], ''Zwabel’s Weblog''. 5 November 2008. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Microsoft Visual Studio&amp;lt;ref&amp;gt;[http://msdn.microsoft.com/en-us/library/whks02wf.aspx#BKMK_ObjectBrowser &amp;quot;Viewing the Structure of Code&amp;quot;], ''Microsoft Developer Network''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* NetBeans&amp;lt;ref&amp;gt;[https://ui.netbeans.org/docs/ui/code_navigator/Navigator%20spec.html &amp;quot;Code Navigator&amp;quot;], ''Netbeans.org''. 14 January 2005. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89387</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89387"/>
		<updated>2014-10-07T02:33:56Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* How to Use Refactoring Browsers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-paste the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A side-by-side comparison of a Smalltalk refactoring browser&amp;lt;ref&amp;gt;[http://onsmalltalk.com/on-the-smalltalk-browser &amp;quot;On the Smalltalk Browser&amp;quot;], ''On Smalltalk''. 17 June 2007. Accessed 6 October 2014.&amp;lt;/ref&amp;gt; and the modern Eclipse Java 'browsing perspective'&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;&amp;gt;[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Browsing.htm &amp;quot;Using the Java Browsing Perspective&amp;quot;], ''Eclipse documentation - Current Release''. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make an egregious mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort of class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&amp;lt;ref&amp;gt;[http://blog.ittybittyapps.com/blog/2013/09/24/refactoring-in-xcode-5/ &amp;quot;Refactoring in Xcode 5&amp;quot;], ''Itty Bitty Labs''. 24 September 2013. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Cincom Smalltalk&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;/&amp;gt;&lt;br /&gt;
* Embarcadero Delphi&amp;lt;ref&amp;gt;[http://www.modelmakertools.com/code-explorer/index.html &amp;quot;ModelMaker Code Explorer&amp;quot;], ''ModelMaker Tools''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&amp;lt;ref&amp;gt;[http://www.tlcc.com/admin/tips.nsf/0/C9408FEF495D6AD985256E40005172AA &amp;quot;Refactor your Java Code in WebSphere Studio&amp;quot;], ''The Learning Continuum Company''. 23 February 2004. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* IntelliJ IDEA&amp;lt;ref&amp;gt;[http://www.jetbrains.com/idea/webhelp/refactoring-source-code.html &amp;quot;Refactoring Source Code&amp;quot;], ''IntelliJ IDEA 13.1.0 Web Help''. 4 July 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* KDevelop&amp;lt;ref&amp;gt;[http://zwabel.wordpress.com/2008/11/05/kdevelop4-now-with-refactoring/ &amp;quot;KDevelop4: Now with refactoring!&amp;quot;], ''Zwabel’s Weblog''. 5 November 2008. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Microsoft Visual Studio&amp;lt;ref&amp;gt;[http://msdn.microsoft.com/en-us/library/whks02wf.aspx#BKMK_ObjectBrowser &amp;quot;Viewing the Structure of Code&amp;quot;], ''Microsoft Developer Network''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* NetBeans&amp;lt;ref&amp;gt;[https://ui.netbeans.org/docs/ui/code_navigator/Navigator%20spec.html &amp;quot;Code Navigator&amp;quot;], ''Netbeans.org''. 14 January 2005. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89386</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89386"/>
		<updated>2014-10-07T02:33:22Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Why should refactoring browsers be used? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-paste the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A side-by-side comparison of a Smalltalk refactoring browser&amp;lt;ref&amp;gt;[http://onsmalltalk.com/on-the-smalltalk-browser &amp;quot;On the Smalltalk Browser&amp;quot;], ''On Smalltalk''. 17 June 2007. Accessed 6 October 2014.&amp;lt;/ref&amp;gt; and the modern Eclipse Java 'browsing perspective'&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;&amp;gt;[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Browsing.htm &amp;quot;Using the Java Browsing Perspective&amp;quot;], ''Eclipse documentation - Current Release''. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make an egregious mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort f class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&amp;lt;ref&amp;gt;[http://blog.ittybittyapps.com/blog/2013/09/24/refactoring-in-xcode-5/ &amp;quot;Refactoring in Xcode 5&amp;quot;], ''Itty Bitty Labs''. 24 September 2013. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Cincom Smalltalk&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;/&amp;gt;&lt;br /&gt;
* Embarcadero Delphi&amp;lt;ref&amp;gt;[http://www.modelmakertools.com/code-explorer/index.html &amp;quot;ModelMaker Code Explorer&amp;quot;], ''ModelMaker Tools''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&amp;lt;ref&amp;gt;[http://www.tlcc.com/admin/tips.nsf/0/C9408FEF495D6AD985256E40005172AA &amp;quot;Refactor your Java Code in WebSphere Studio&amp;quot;], ''The Learning Continuum Company''. 23 February 2004. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* IntelliJ IDEA&amp;lt;ref&amp;gt;[http://www.jetbrains.com/idea/webhelp/refactoring-source-code.html &amp;quot;Refactoring Source Code&amp;quot;], ''IntelliJ IDEA 13.1.0 Web Help''. 4 July 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* KDevelop&amp;lt;ref&amp;gt;[http://zwabel.wordpress.com/2008/11/05/kdevelop4-now-with-refactoring/ &amp;quot;KDevelop4: Now with refactoring!&amp;quot;], ''Zwabel’s Weblog''. 5 November 2008. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Microsoft Visual Studio&amp;lt;ref&amp;gt;[http://msdn.microsoft.com/en-us/library/whks02wf.aspx#BKMK_ObjectBrowser &amp;quot;Viewing the Structure of Code&amp;quot;], ''Microsoft Developer Network''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* NetBeans&amp;lt;ref&amp;gt;[https://ui.netbeans.org/docs/ui/code_navigator/Navigator%20spec.html &amp;quot;Code Navigator&amp;quot;], ''Netbeans.org''. 14 January 2005. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89385</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89385"/>
		<updated>2014-10-07T02:33:09Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Why should refactoring browsers be used? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-paste the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A side-by-side comparison of a Smalltalk refactoring browser&amp;lt;ref&amp;gt;[http://onsmalltalk.com/on-the-smalltalk-browser &amp;quot;On the Smalltalk Browser&amp;quot;], ''On Smalltalk''. 17 June 2007. Accessed 6 October 2014.&amp;lt;/ref&amp;gt; and the modern Eclipse Java 'browsing perspective'&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;&amp;gt;[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Browsing.htm &amp;quot;Using the Java Browsing Perspective&amp;quot;], ''Eclipse documentation - Current Release''. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make an ergregious mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort f class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&amp;lt;ref&amp;gt;[http://blog.ittybittyapps.com/blog/2013/09/24/refactoring-in-xcode-5/ &amp;quot;Refactoring in Xcode 5&amp;quot;], ''Itty Bitty Labs''. 24 September 2013. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Cincom Smalltalk&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;/&amp;gt;&lt;br /&gt;
* Embarcadero Delphi&amp;lt;ref&amp;gt;[http://www.modelmakertools.com/code-explorer/index.html &amp;quot;ModelMaker Code Explorer&amp;quot;], ''ModelMaker Tools''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&amp;lt;ref&amp;gt;[http://www.tlcc.com/admin/tips.nsf/0/C9408FEF495D6AD985256E40005172AA &amp;quot;Refactor your Java Code in WebSphere Studio&amp;quot;], ''The Learning Continuum Company''. 23 February 2004. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* IntelliJ IDEA&amp;lt;ref&amp;gt;[http://www.jetbrains.com/idea/webhelp/refactoring-source-code.html &amp;quot;Refactoring Source Code&amp;quot;], ''IntelliJ IDEA 13.1.0 Web Help''. 4 July 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* KDevelop&amp;lt;ref&amp;gt;[http://zwabel.wordpress.com/2008/11/05/kdevelop4-now-with-refactoring/ &amp;quot;KDevelop4: Now with refactoring!&amp;quot;], ''Zwabel’s Weblog''. 5 November 2008. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Microsoft Visual Studio&amp;lt;ref&amp;gt;[http://msdn.microsoft.com/en-us/library/whks02wf.aspx#BKMK_ObjectBrowser &amp;quot;Viewing the Structure of Code&amp;quot;], ''Microsoft Developer Network''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* NetBeans&amp;lt;ref&amp;gt;[https://ui.netbeans.org/docs/ui/code_navigator/Navigator%20spec.html &amp;quot;Code Navigator&amp;quot;], ''Netbeans.org''. 14 January 2005. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89384</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89384"/>
		<updated>2014-10-07T02:32:13Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* A Brief History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-paste the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A side-by-side comparison of a Smalltalk refactoring browser&amp;lt;ref&amp;gt;[http://onsmalltalk.com/on-the-smalltalk-browser &amp;quot;On the Smalltalk Browser&amp;quot;], ''On Smalltalk''. 17 June 2007. Accessed 6 October 2014.&amp;lt;/ref&amp;gt; and the modern Eclipse Java 'browsing perspective'&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;&amp;gt;[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Browsing.htm &amp;quot;Using the Java Browsing Perspective&amp;quot;], ''Eclipse documentation - Current Release''. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort f class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&amp;lt;ref&amp;gt;[http://blog.ittybittyapps.com/blog/2013/09/24/refactoring-in-xcode-5/ &amp;quot;Refactoring in Xcode 5&amp;quot;], ''Itty Bitty Labs''. 24 September 2013. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Cincom Smalltalk&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;/&amp;gt;&lt;br /&gt;
* Embarcadero Delphi&amp;lt;ref&amp;gt;[http://www.modelmakertools.com/code-explorer/index.html &amp;quot;ModelMaker Code Explorer&amp;quot;], ''ModelMaker Tools''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&amp;lt;ref&amp;gt;[http://www.tlcc.com/admin/tips.nsf/0/C9408FEF495D6AD985256E40005172AA &amp;quot;Refactor your Java Code in WebSphere Studio&amp;quot;], ''The Learning Continuum Company''. 23 February 2004. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* IntelliJ IDEA&amp;lt;ref&amp;gt;[http://www.jetbrains.com/idea/webhelp/refactoring-source-code.html &amp;quot;Refactoring Source Code&amp;quot;], ''IntelliJ IDEA 13.1.0 Web Help''. 4 July 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* KDevelop&amp;lt;ref&amp;gt;[http://zwabel.wordpress.com/2008/11/05/kdevelop4-now-with-refactoring/ &amp;quot;KDevelop4: Now with refactoring!&amp;quot;], ''Zwabel’s Weblog''. 5 November 2008. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Microsoft Visual Studio&amp;lt;ref&amp;gt;[http://msdn.microsoft.com/en-us/library/whks02wf.aspx#BKMK_ObjectBrowser &amp;quot;Viewing the Structure of Code&amp;quot;], ''Microsoft Developer Network''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* NetBeans&amp;lt;ref&amp;gt;[https://ui.netbeans.org/docs/ui/code_navigator/Navigator%20spec.html &amp;quot;Code Navigator&amp;quot;], ''Netbeans.org''. 14 January 2005. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89383</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89383"/>
		<updated>2014-10-07T02:31:21Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* What are refactoring browsers? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-paste the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have at least some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A side-by-side comparison of a Smalltalk refactoring browser&amp;lt;ref&amp;gt;[http://onsmalltalk.com/on-the-smalltalk-browser &amp;quot;On the Smalltalk Browser&amp;quot;], ''On Smalltalk''. 17 June 2007. Accessed 6 October 2014.&amp;lt;/ref&amp;gt; and the modern Eclipse Java 'browsing perspective'&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;&amp;gt;[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Browsing.htm &amp;quot;Using the Java Browsing Perspective&amp;quot;], ''Eclipse documentation - Current Release''. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort f class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&amp;lt;ref&amp;gt;[http://blog.ittybittyapps.com/blog/2013/09/24/refactoring-in-xcode-5/ &amp;quot;Refactoring in Xcode 5&amp;quot;], ''Itty Bitty Labs''. 24 September 2013. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Cincom Smalltalk&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;/&amp;gt;&lt;br /&gt;
* Embarcadero Delphi&amp;lt;ref&amp;gt;[http://www.modelmakertools.com/code-explorer/index.html &amp;quot;ModelMaker Code Explorer&amp;quot;], ''ModelMaker Tools''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&amp;lt;ref&amp;gt;[http://www.tlcc.com/admin/tips.nsf/0/C9408FEF495D6AD985256E40005172AA &amp;quot;Refactor your Java Code in WebSphere Studio&amp;quot;], ''The Learning Continuum Company''. 23 February 2004. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* IntelliJ IDEA&amp;lt;ref&amp;gt;[http://www.jetbrains.com/idea/webhelp/refactoring-source-code.html &amp;quot;Refactoring Source Code&amp;quot;], ''IntelliJ IDEA 13.1.0 Web Help''. 4 July 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* KDevelop&amp;lt;ref&amp;gt;[http://zwabel.wordpress.com/2008/11/05/kdevelop4-now-with-refactoring/ &amp;quot;KDevelop4: Now with refactoring!&amp;quot;], ''Zwabel’s Weblog''. 5 November 2008. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Microsoft Visual Studio&amp;lt;ref&amp;gt;[http://msdn.microsoft.com/en-us/library/whks02wf.aspx#BKMK_ObjectBrowser &amp;quot;Viewing the Structure of Code&amp;quot;], ''Microsoft Developer Network''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* NetBeans&amp;lt;ref&amp;gt;[https://ui.netbeans.org/docs/ui/code_navigator/Navigator%20spec.html &amp;quot;Code Navigator&amp;quot;], ''Netbeans.org''. 14 January 2005. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89382</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89382"/>
		<updated>2014-10-07T02:31:04Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Examples of Refactoring Browsers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-pastie the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have at least some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A side-by-side comparison of a Smalltalk refactoring browser&amp;lt;ref&amp;gt;[http://onsmalltalk.com/on-the-smalltalk-browser &amp;quot;On the Smalltalk Browser&amp;quot;], ''On Smalltalk''. 17 June 2007. Accessed 6 October 2014.&amp;lt;/ref&amp;gt; and the modern Eclipse Java 'browsing perspective'&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;&amp;gt;[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Browsing.htm &amp;quot;Using the Java Browsing Perspective&amp;quot;], ''Eclipse documentation - Current Release''. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort f class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&amp;lt;ref&amp;gt;[http://blog.ittybittyapps.com/blog/2013/09/24/refactoring-in-xcode-5/ &amp;quot;Refactoring in Xcode 5&amp;quot;], ''Itty Bitty Labs''. 24 September 2013. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Cincom Smalltalk&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;/&amp;gt;&lt;br /&gt;
* Embarcadero Delphi&amp;lt;ref&amp;gt;[http://www.modelmakertools.com/code-explorer/index.html &amp;quot;ModelMaker Code Explorer&amp;quot;], ''ModelMaker Tools''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&amp;lt;ref&amp;gt;[http://www.tlcc.com/admin/tips.nsf/0/C9408FEF495D6AD985256E40005172AA &amp;quot;Refactor your Java Code in WebSphere Studio&amp;quot;], ''The Learning Continuum Company''. 23 February 2004. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* IntelliJ IDEA&amp;lt;ref&amp;gt;[http://www.jetbrains.com/idea/webhelp/refactoring-source-code.html &amp;quot;Refactoring Source Code&amp;quot;], ''IntelliJ IDEA 13.1.0 Web Help''. 4 July 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* KDevelop&amp;lt;ref&amp;gt;[http://zwabel.wordpress.com/2008/11/05/kdevelop4-now-with-refactoring/ &amp;quot;KDevelop4: Now with refactoring!&amp;quot;], ''Zwabel’s Weblog''. 5 November 2008. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Microsoft Visual Studio&amp;lt;ref&amp;gt;[http://msdn.microsoft.com/en-us/library/whks02wf.aspx#BKMK_ObjectBrowser &amp;quot;Viewing the Structure of Code&amp;quot;], ''Microsoft Developer Network''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* NetBeans&amp;lt;ref&amp;gt;[https://ui.netbeans.org/docs/ui/code_navigator/Navigator%20spec.html &amp;quot;Code Navigator&amp;quot;], ''Netbeans.org''. 14 January 2005. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89380</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89380"/>
		<updated>2014-10-07T02:30:50Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Examples of Refactoring Browsers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-pastie the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have at least some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A side-by-side comparison of a Smalltalk refactoring browser&amp;lt;ref&amp;gt;[http://onsmalltalk.com/on-the-smalltalk-browser &amp;quot;On the Smalltalk Browser&amp;quot;], ''On Smalltalk''. 17 June 2007. Accessed 6 October 2014.&amp;lt;/ref&amp;gt; and the modern Eclipse Java 'browsing perspective'&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;&amp;gt;[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Browsing.htm &amp;quot;Using the Java Browsing Perspective&amp;quot;], ''Eclipse documentation - Current Release''. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort f class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&amp;lt;ref&amp;gt;[http://blog.ittybittyapps.com/blog/2013/09/24/refactoring-in-xcode-5/ &amp;quot;Refactoring in Xcode 5&amp;quot;], ''Itty Bitty Labs''. 24 September 2013. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Cincom Smalltalk&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;/&amp;gt;&lt;br /&gt;
* Embarcadero Delphi&amp;lt;ref&amp;gt;[http://www.modelmakertools.com/code-explorer/index.html &amp;quot;ModelMaker Code Explorer&amp;quot;], ''ModelMaker Tools''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&amp;lt;ref&amp;gt;[http://www.tlcc.com/admin/tips.nsf/0/C9408FEF495D6AD985256E40005172AA &amp;quot;Refactor your Java Code in WebSphere Studio&amp;quot;], ''The Learning Continuum Company''. 23 February 2004. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* IntelliJ IDEA&amp;lt;ref&amp;gt;[http://www.jetbrains.com/idea/webhelp/refactoring-source-code.html &amp;quot;Refactoring Source Code&amp;quot;], ''IntelliJ IDEA 13.1.0 Web Help''. 4 July 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* KDevelop&amp;lt;ref&amp;gt;[http://zwabel.wordpress.com/2008/11/05/kdevelop4-now-with-refactoring/ &amp;quot;KDevelop4: Now with refactoring!&amp;quot;], ''Zwabel’s Weblog''. 5 November 2008. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Microsoft Visual Studio&amp;lt;ref&amp;gt;[http://msdn.microsoft.com/en-us/library/whks02wf.aspx#BKMK_ObjectBrowser &amp;quot;Viewing the Structure of Code&amp;quot;], ''Microsoft Developer Network''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* NetBeans&amp;lt;ref&amp;gt;[https://ui.netbeans.org/docs/ui/code_navigator/Navigator%20spec.html &amp;quot;Code Navigator&amp;quot;], ''Netbeans.org''. 14 January 2005. Accessed 6 October 2014.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89377</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89377"/>
		<updated>2014-10-07T02:28:31Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Examples of Refactoring Browsers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-pastie the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have at least some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A side-by-side comparison of a Smalltalk refactoring browser&amp;lt;ref&amp;gt;[http://onsmalltalk.com/on-the-smalltalk-browser &amp;quot;On the Smalltalk Browser&amp;quot;], ''On Smalltalk''. 17 June 2007. Accessed 6 October 2014.&amp;lt;/ref&amp;gt; and the modern Eclipse Java 'browsing perspective'&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;&amp;gt;[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Browsing.htm &amp;quot;Using the Java Browsing Perspective&amp;quot;], ''Eclipse documentation - Current Release''. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort f class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&amp;lt;ref&amp;gt;[http://blog.ittybittyapps.com/blog/2013/09/24/refactoring-in-xcode-5/ &amp;quot;Refactoring in Xcode 5&amp;quot;], ''Itty Bitty Labs''. 24 September 2013. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Cincom Smalltalk&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;/&amp;gt;&lt;br /&gt;
* Embarcadero Delphi&amp;lt;ref&amp;gt;[http://www.modelmakertools.com/code-explorer/index.html &amp;quot;ModelMaker Code Explorer&amp;quot;], ''ModelMaker Tools''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&amp;lt;ref&amp;gt;[http://www.tlcc.com/admin/tips.nsf/0/C9408FEF495D6AD985256E40005172AA &amp;quot;Refactor your Java Code in WebSphere Studio&amp;quot;], ''The Learning Continuum Company''. 23 February 2004. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* IntelliJ IDEA&amp;lt;ref&amp;gt;[http://www.jetbrains.com/idea/webhelp/refactoring-source-code.html &amp;quot;Refactoring Source Code&amp;quot;], ''IntelliJ IDEA 13.1.0 Web Help''. 4 July 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* KDevelop&amp;lt;ref&amp;gt;[http://zwabel.wordpress.com/2008/11/05/kdevelop4-now-with-refactoring/ &amp;quot;KDevelop4: Now with refactoring!&amp;quot;], ''Zwabel’s Weblog''. 5 November 2008. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Microsoft Visual Studio&amp;lt;ref&amp;gt;[http://msdn.microsoft.com/en-us/library/whks02wf.aspx#BKMK_ObjectBrowser &amp;quot;Viewing the Structure of Code&amp;quot;], ''Microsoft Developer Network''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* NetBeans&lt;br /&gt;
* Red Gate .NET Reflector&lt;br /&gt;
* Squeak Smalltalk&lt;br /&gt;
* Step Ahead Javelin [1]&lt;br /&gt;
* Visual Prolog&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89376</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89376"/>
		<updated>2014-10-07T02:28:04Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-pastie the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have at least some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A side-by-side comparison of a Smalltalk refactoring browser&amp;lt;ref&amp;gt;[http://onsmalltalk.com/on-the-smalltalk-browser &amp;quot;On the Smalltalk Browser&amp;quot;], ''On Smalltalk''. 17 June 2007. Accessed 6 October 2014.&amp;lt;/ref&amp;gt; and the modern Eclipse Java 'browsing perspective'&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;&amp;gt;[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Browsing.htm &amp;quot;Using the Java Browsing Perspective&amp;quot;], ''Eclipse documentation - Current Release''. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort f class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&amp;lt;ref&amp;gt;[http://blog.ittybittyapps.com/blog/2013/09/24/refactoring-in-xcode-5/ &amp;quot;Refactoring in Xcode 5&amp;quot;], ''Itty Bitty Labs''. 24 September 2013. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Cincom Smalltalk&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&amp;lt;ref name=&amp;quot;Eclipse&amp;quot;&amp;gt;&lt;br /&gt;
* Embarcadero Delphi&amp;lt;ref&amp;gt;[http://www.modelmakertools.com/code-explorer/index.html &amp;quot;ModelMaker Code Explorer&amp;quot;], ''ModelMaker Tools''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&amp;lt;ref&amp;gt;[http://www.tlcc.com/admin/tips.nsf/0/C9408FEF495D6AD985256E40005172AA &amp;quot;Refactor your Java Code in WebSphere Studio&amp;quot;], ''The Learning Continuum Company''. 23 February 2004. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* IntelliJ IDEA&amp;lt;ref&amp;gt;[http://www.jetbrains.com/idea/webhelp/refactoring-source-code.html &amp;quot;Refactoring Source Code&amp;quot;], ''IntelliJ IDEA 13.1.0 Web Help''. 4 July 2014. Accessed 6 October 2014.&lt;br /&gt;
* KDevelop&amp;lt;ref&amp;gt;[http://zwabel.wordpress.com/2008/11/05/kdevelop4-now-with-refactoring/ &amp;quot;KDevelop4: Now with refactoring!&amp;quot;], ''Zwabel’s Weblog''. 5 November 2008. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Microsoft Visual Studio&amp;lt;ref&amp;gt;[http://msdn.microsoft.com/en-us/library/whks02wf.aspx#BKMK_ObjectBrowser &amp;quot;Viewing the Structure of Code&amp;quot;], ''Microsoft Developer Network''. 2014. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* NetBeans&lt;br /&gt;
* Red Gate .NET Reflector&lt;br /&gt;
* Squeak Smalltalk&lt;br /&gt;
* Step Ahead Javelin [1]&lt;br /&gt;
* Visual Prolog&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89365</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89365"/>
		<updated>2014-10-07T02:07:41Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Examples of Refactoring Browsers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-pastie the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have at least some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A side-by-side comparison of a Smalltalk refactoring browser&amp;lt;ref&amp;gt;[http://onsmalltalk.com/on-the-smalltalk-browser &amp;quot;On the Smalltalk Browser&amp;quot;], ''On Smalltalk''. 17 June 2007. Accessed 6 October 2014.&amp;lt;/ref&amp;gt; and the modern Eclipse Java 'browsing perspective'&amp;lt;ref&amp;gt;[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Browsing.htm &amp;quot;Using the Java Browsing Perspective&amp;quot;], ''Eclipse documentation - Current Release''. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort f class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&amp;lt;ref&amp;gt;[http://blog.ittybittyapps.com/blog/2013/09/24/refactoring-in-xcode-5/ &amp;quot;Refactoring in Xcode 5&amp;quot;], ''Itty Bitty Labs''. 24 September 2013. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Cincom Smalltalk&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&lt;br /&gt;
* Embarcadero Delphi&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&lt;br /&gt;
* IntelliJ IDEA&lt;br /&gt;
* KDevelop&lt;br /&gt;
* Microsoft Visual Studio&lt;br /&gt;
* NetBeans&lt;br /&gt;
* Red Gate .NET Reflector&lt;br /&gt;
* Squeak Smalltalk&lt;br /&gt;
* Step Ahead Javelin [1]&lt;br /&gt;
* Visual Prolog&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89364</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89364"/>
		<updated>2014-10-07T02:07:31Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Examples of Refactoring Browsers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-pastie the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have at least some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A side-by-side comparison of a Smalltalk refactoring browser&amp;lt;ref&amp;gt;[http://onsmalltalk.com/on-the-smalltalk-browser &amp;quot;On the Smalltalk Browser&amp;quot;], ''On Smalltalk''. 17 June 2007. Accessed 6 October 2014.&amp;lt;/ref&amp;gt; and the modern Eclipse Java 'browsing perspective'&amp;lt;ref&amp;gt;[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Browsing.htm &amp;quot;Using the Java Browsing Perspective&amp;quot;], ''Eclipse documentation - Current Release''. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort f class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&amp;lt;ref&amp;gt;[http://blog.ittybittyapps.com/blog/2013/09/24/refactoring-in-xcode-5/ &amp;quot;Refactoring in Xcode 5&amp;quot;], ''Itty Bitty Labs''. 24 September 2013. Accessed 6 October 2014.&lt;br /&gt;
* Cincom Smalltalk&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&lt;br /&gt;
* Embarcadero Delphi&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&lt;br /&gt;
* IntelliJ IDEA&lt;br /&gt;
* KDevelop&lt;br /&gt;
* Microsoft Visual Studio&lt;br /&gt;
* NetBeans&lt;br /&gt;
* Red Gate .NET Reflector&lt;br /&gt;
* Squeak Smalltalk&lt;br /&gt;
* Step Ahead Javelin [1]&lt;br /&gt;
* Visual Prolog&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89363</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89363"/>
		<updated>2014-10-07T02:05:16Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* A Brief History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-pastie the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have at least some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A side-by-side comparison of a Smalltalk refactoring browser&amp;lt;ref&amp;gt;[http://onsmalltalk.com/on-the-smalltalk-browser &amp;quot;On the Smalltalk Browser&amp;quot;], ''On Smalltalk''. 17 June 2007. Accessed 6 October 2014.&amp;lt;/ref&amp;gt; and the modern Eclipse Java 'browsing perspective'&amp;lt;ref&amp;gt;[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Browsing.htm &amp;quot;Using the Java Browsing Perspective&amp;quot;], ''Eclipse documentation - Current Release''. Accessed 6 October 2014.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort f class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&lt;br /&gt;
* Cincom Smalltalk&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&lt;br /&gt;
* Embarcadero Delphi&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&lt;br /&gt;
* IntelliJ IDEA&lt;br /&gt;
* KDevelop&lt;br /&gt;
* Microsoft Visual Studio&lt;br /&gt;
* NetBeans&lt;br /&gt;
* Red Gate .NET Reflector&lt;br /&gt;
* Squeak Smalltalk&lt;br /&gt;
* Step Ahead Javelin [1]&lt;br /&gt;
* Visual Prolog&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Netbeans_refactoring_browser.png&amp;diff=89362</id>
		<title>File:Netbeans refactoring browser.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Netbeans_refactoring_browser.png&amp;diff=89362"/>
		<updated>2014-10-07T02:01:11Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: uploaded a new version of &amp;amp;quot;File:Netbeans refactoring browser.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89361</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89361"/>
		<updated>2014-10-07T02:00:12Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* How to Use Refactoring Browsers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-pastie the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have at least some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
Because the whole idea behind refactoring browsers is to make refactoring easier and more intuitive, most modern IDEs will make it easy to perform refactoring using some sort f class browser. Although different applications may have different supported operations, most refactoring browsers should allow you to:&lt;br /&gt;
# Click and drag to move classes from package to package, or class members and methods from class to class.&lt;br /&gt;
# Rename a package, file, method, or member by right-clicking it and selecting the appropriate 'rename' menu item.&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&lt;br /&gt;
* Cincom Smalltalk&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&lt;br /&gt;
* Embarcadero Delphi&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&lt;br /&gt;
* IntelliJ IDEA&lt;br /&gt;
* KDevelop&lt;br /&gt;
* Microsoft Visual Studio&lt;br /&gt;
* NetBeans&lt;br /&gt;
* Red Gate .NET Reflector&lt;br /&gt;
* Squeak Smalltalk&lt;br /&gt;
* Step Ahead Javelin [1]&lt;br /&gt;
* Visual Prolog&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Smalltalk_eclipse.png&amp;diff=89359</id>
		<title>File:Smalltalk eclipse.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Smalltalk_eclipse.png&amp;diff=89359"/>
		<updated>2014-10-07T01:56:14Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: uploaded a new version of &amp;amp;quot;File:Smalltalk eclipse.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89358</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89358"/>
		<updated>2014-10-07T01:55:10Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-pastie the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have at least some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;], ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;IDE&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Integrated_development_environment &amp;quot;Integrated development environment&amp;quot;], ''Wikipedia''. 2 September 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:Smalltalk eclipse.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&lt;br /&gt;
* Cincom Smalltalk&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&lt;br /&gt;
* Embarcadero Delphi&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&lt;br /&gt;
* IntelliJ IDEA&lt;br /&gt;
* KDevelop&lt;br /&gt;
* Microsoft Visual Studio&lt;br /&gt;
* NetBeans&lt;br /&gt;
* Red Gate .NET Reflector&lt;br /&gt;
* Squeak Smalltalk&lt;br /&gt;
* Step Ahead Javelin [1]&lt;br /&gt;
* Visual Prolog&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Smalltalk_eclipse.png&amp;diff=89357</id>
		<title>File:Smalltalk eclipse.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Smalltalk_eclipse.png&amp;diff=89357"/>
		<updated>2014-10-07T01:54:40Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89354</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89354"/>
		<updated>2014-10-07T01:44:03Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Examples of Refactoring Browsers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-pastie the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have at least some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;, ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Apple Xcode for Mac OS X&lt;br /&gt;
* Cincom Smalltalk&lt;br /&gt;
* CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
* Eclipse&lt;br /&gt;
* Embarcadero Delphi&lt;br /&gt;
* Embarcadero JBuilder&lt;br /&gt;
* IBM WebSphere&lt;br /&gt;
* IntelliJ IDEA&lt;br /&gt;
* KDevelop&lt;br /&gt;
* Microsoft Visual Studio&lt;br /&gt;
* NetBeans&lt;br /&gt;
* Red Gate .NET Reflector&lt;br /&gt;
* Squeak Smalltalk&lt;br /&gt;
* Step Ahead Javelin [1]&lt;br /&gt;
* Visual Prolog&lt;br /&gt;
&lt;br /&gt;
==Sample Reference==&lt;br /&gt;
&amp;lt;ref&amp;gt;[http://guides.rubyonrails.org/3_1_release_notes.html &amp;quot;Ruby on Rails 3.1 Release Notes&amp;quot;], ''Rails Guides''. Retrieved 17 September 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89353</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89353"/>
		<updated>2014-10-07T01:43:22Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* Glossary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-pastie the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have at least some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;, ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually some form of a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apple Xcode for Mac OS X&lt;br /&gt;
Cincom Smalltalk&lt;br /&gt;
CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
Eclipse&lt;br /&gt;
Embarcadero Delphi&lt;br /&gt;
Embarcadero JBuilder&lt;br /&gt;
IBM WebSphere&lt;br /&gt;
IntelliJ IDEA&lt;br /&gt;
KDevelop&lt;br /&gt;
Microsoft Visual Studio&lt;br /&gt;
NetBeans&lt;br /&gt;
Red Gate .NET Reflector&lt;br /&gt;
Squeak Smalltalk&lt;br /&gt;
Step Ahead Javelin [1]&lt;br /&gt;
Visual Prolog&lt;br /&gt;
&lt;br /&gt;
==Sample Reference==&lt;br /&gt;
&amp;lt;ref&amp;gt;[http://guides.rubyonrails.org/3_1_release_notes.html &amp;quot;Ruby on Rails 3.1 Release Notes&amp;quot;], ''Rails Guides''. Retrieved 17 September 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89352</id>
		<title>CSC/ECE 517 Fall 2014/ch1b 32 sj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1b_32_sj&amp;diff=89352"/>
		<updated>2014-10-07T01:41:08Z</updated>

		<summary type="html">&lt;p&gt;Sjames3: /* A Brief History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Refactoring Browsers in Popular IDEs==&lt;br /&gt;
&lt;br /&gt;
===What are refactoring browsers?===&lt;br /&gt;
Have you ever extracted a method by hand? To do so, you might pick out the code you want to extract into a separate method, type out a method declaration for it, copy-pastie the code, and tweak the parameters to get everything just right. What about renaming a method by hand, or copy-pasting a method or variable from one class to another?&lt;br /&gt;
&lt;br /&gt;
Refactoring browsers greatly simplify the work of these and many other common types of refactoring operations by providing a graphical interface that programmers can interact with directly to perform these actions. Usually, this interface takes the form of a class browser, which lists out the members and methods of different classes.&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans_refactoring_browser.png|frame|alt=A refactoring browser in a modern IDE.|A refactoring browser in a modern IDE (Netbeans).]]&lt;br /&gt;
&lt;br /&gt;
====A Brief History====&lt;br /&gt;
If we trace recognizable versions of refactoring browsers back far enough, we eventually end up with Smalltalk in the early 70's. Smalltalk is one of the earliest object oriented languages and development environments, and it provided a graphical interface that could be used to browse and refactor Smalltalk code. This idea of using a graphical interface to interact with a class hierarchy quickly caught on, and it persisted through the C++ era in the late 80's and into the introduction of Java in the mid 90's. Now all major IDEs are expected to have at least some sort of graphical class browser, usually with at least rudimentary refactoring capabilites (renaming, etc.)&amp;lt;ref name=&amp;quot;Class browser&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Class_browser &amp;quot;Class browser&amp;quot;, ''Wikipedia''. 3 April 2014. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Why should refactoring browsers be used?===&lt;br /&gt;
Refactoring browsers should be used for several reasons:&lt;br /&gt;
# They are faster and easier to use than keyboard-initiated refactoring operations.&lt;br /&gt;
# They are safe - unless you make a mistake like moving a method to the wrong class, you are nearly guaranteed not to change the behavior of your program.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;&amp;gt;[http://c2.com/cgi/wiki?RefactoringBrowser &amp;quot;Refactoring Browser&amp;quot;], ''Cunningham &amp;amp; Cunningham, Inc.''. 10 April 2012. Retrieved 6 October 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# They allow you to bravely perform various logic organizing experiments, undoing those whose results aren't satisfactory.&amp;lt;ref name=&amp;quot;Smalltalk&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Refactoring Browsers==&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Class_browser Class browser]&lt;br /&gt;
: A class browser is a feature of an integrated development environment (IDE) that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Integrated_development_environment IDE]&lt;br /&gt;
: An IDE, or integrated development environment, is a software application that provides extensive functionality to simplify the process of software creation and modification.&lt;br /&gt;
; Refactoring browser&lt;br /&gt;
: A refactoring browser allows the programmer to use a graphical interface (usually a class browser) to manipulate, combine, and separate code elements.&lt;br /&gt;
; [http://en.wikipedia.org/wiki/Smalltalk Smalltalk]&lt;br /&gt;
: One of the earliest object oriented languages. Also a development environment that is regarded as a well-known ancestor of modern class and refactoring browsers.&lt;br /&gt;
&lt;br /&gt;
==Examples of Refactoring Browsers==&lt;br /&gt;
All major development environments supply some manner of class browser, including:&amp;lt;ref name=&amp;quot;Class browser&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apple Xcode for Mac OS X&lt;br /&gt;
Cincom Smalltalk&lt;br /&gt;
CodeWarrior for Microsoft Windows, Mac OS, and embedded systems&lt;br /&gt;
Eclipse&lt;br /&gt;
Embarcadero Delphi&lt;br /&gt;
Embarcadero JBuilder&lt;br /&gt;
IBM WebSphere&lt;br /&gt;
IntelliJ IDEA&lt;br /&gt;
KDevelop&lt;br /&gt;
Microsoft Visual Studio&lt;br /&gt;
NetBeans&lt;br /&gt;
Red Gate .NET Reflector&lt;br /&gt;
Squeak Smalltalk&lt;br /&gt;
Step Ahead Javelin [1]&lt;br /&gt;
Visual Prolog&lt;br /&gt;
&lt;br /&gt;
==Sample Reference==&lt;br /&gt;
&amp;lt;ref&amp;gt;[http://guides.rubyonrails.org/3_1_release_notes.html &amp;quot;Ruby on Rails 3.1 Release Notes&amp;quot;], ''Rails Guides''. Retrieved 17 September 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjames3</name></author>
	</entry>
</feed>