Introducing
Your new presentation assistant.
Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.
Trending searches
Rename
Extract Local Variable
Extract Method
Inline
Extract Local Variable
Rename
Move
Extract Method
Rename
Eclipse-based data collectors
Change Method Signature
1. How frequently do multiple kinds of automated refactorings occur in a short time span?
Extract Constant
Extract Method
Extract Local Variable
refactoring
batches
refactoring batch kinds
Mohsen Vakilian, Nicholas Chen, Roshanak Zilouchian Moghaddam, Stas Negara, and Ralph E. Johnson
Rename
Inline
Extract Local Variable
Inline
Employee
HourlyEmployee
Extract Method
Inline
parallelism and concurrency
security
type inference
library migration
FSE'09, ICSE'09, ICSE'11
ESSoS'09
OOPSLA'04, ECOOP'05
OOPSLA'05
Convert Local Variable to Field
[ICSE'06, FASE'12, ...]
47
34
12
8
6
1. Refactoring Closely Related Entities
2. Adapting Extract Method
3. Backtracking Refactorings
4. Composition-over-configuration
5. Multiple Refactorings on an Entity
getId()
getName()
getManager()
Move
Rename
2. How diverse are the refactorings frequently invoked in a short time span?
[Negara et al, ECOOP 2013]
getId()
getName()
getManager()
getBiWeaklyPay()
Create new interface 'NewI' for 'C'
Sample
139
32
# of programmers
duration of the study
duration of programming
# of automated refactorings
30
3 months
> 2000 hours
> 3000
[ICSE'09, ECOOP'13]
The second [compositional] one provides a more stepwise view, giving me more intermediate feedback, as well as an ability to run my tests at each step. This goes a long way to making sure the refactoring is the right decision.
Usually, I’m extracting a common superclass to remove duplication from more than one similar class, so I’d need to be able to select multiple classes.
[Negara et al., ECOOP 2013]
Change Method Signature
Rename
We show that:
[ECOOP'09]
*
Extract Method
Extract Local Variable
Rename
(
)
Declare method 'm()' in interface 'NewI'
Move constant 'c' to interface 'NewI'
Pull Up
University of Illinois at Urbana-Champaign
Use Supertype Where Possible
SalariedEmployee
`
Inline
Extract Local Variable
Rename
1,633
Total
139
Extract Constant
Rename
HourlyEmployee
SalariedEmployee
7
2
4
7
1
5
9
3
1
6
5
2
7
4
2
[TSE'11, ICSE'12]
1. compositional refactoring is to programmers.
2. programmers are to compositional refactoring through a survey study.
3. compositional refactoring is , through a lab study.
getId()
getName()
getManager()
getMonthlyPay()
[ICSE'08]
getMonthlyPay()
getBiWeaklyPay()
[ICSE'12]
We analyzed the UDC data that was collected during 20 months from 195,105 users.
[Vakilian et al., ICSE 2012]
I was not sure if it [the compositional refactoring tool] was seeing the full picture of the changes. Since it was stepwise [and] I’m doing [each step] one by one, I’m not sure if each of the steps is going to be integrated correctly.
*
The wizard gives this illusion of just doing everything for you. [...] The downside is that there were a number of options that I read and didn’t quite make sense of, and said I guess I don’t have to care about that. And, of course, I found my sorrow that that wasn’t true. It did things that I completely didn’t expect. [...] And, it doesn’t give control.
(
Create new superclass 'NewC' for 'C'
Move 'm' to supertype 'NewC'
)
[ICSE'13, SoftVis'10]
Programmers refactor frequently [Xing et al., ICSM 2006], [Murphy-Hill et al., ICSE 2009].
https://illinois.edu/fb/sec/8454746
http://codingspectator.cs.illinois.edu/compositional-refactoring/
Use Supertype Where Possible