More Refactorings

Will we ever see more refactorings in IDEA? I know that JBuilder and
Eclipse are putting a lot of focus on refactorings and I'd hate to see
IntelliJ lose their lead because they were focused on other things that
developers don't do on a daily (if not hourly) basis.

;ted


12 comments
Comment actions Permalink

See http://www.intellij.net/forums/thread.jsp?forum=22&thread=44086&tstart=0&trange=100#571785

Just as a reference here are the list of refactoring related SCR I have been collecting:

Missing refactorings
• Move method (http://www.intellij.net/tracker/idea/viewSCR?publicId=2957 )
• Pull up/down contructors (http://www.intellij.net/tracker/idea/viewSCR?publicId=10028 & http://www.intellij.net/tracker/idea/viewSCR?publicId=11702) BTW The current support for ctor refactoring is pityful: no refactoring handles ctors!
• Inline utility constructors. (http://www.intellij.net/tracker/idea/viewSCR?publicId=4356 )
• Inline Constant (http://www.intellij.net/tracker/idea/viewSCR?publicId=4494 )
• Inline Superclass (http://www.intellij.net/tracker/idea/viewSCR?publicId=12684 ) (Again caused by no ctor handling)
• Inline Field. Select an assignment and substitute the field access with rhs. (Obviously would abort on or not handle multiple assignments)
• Introduce Parameter Object (http://www.intellij.net/tracker/idea/viewSCR?publicId=3246 )
• Encapsulate traversal (demeter law) (http://www.intellij.net/tracker/idea/viewSCR?publicId=12065 )
Some less useful since there are work around but still would be nice.
• Extract interface/superclass with same name as current AKA create subclass (http://www.intellij.net/tracker/idea/viewSCR?publicId=11345 & http://www.intellij.net/tracker/idea/viewSCR?publicId=12730 )
• Inline multiple methods at once (http://www.intellij.net/tracker/idea/viewSCR?publicId=12922 )
• Changing signature should allow to have a default value for the parameters that are removed (http://www.intellij.net/tracker/idea/viewSCR?publicId=4700 )
• Remove imports statements made obsolete by a Move refactoring (http://www.intellij.net/tracker/idea/viewSCR?publicId=9694 )

Usability enhancements
• Don't abort on read-only file, just let the VCS plugin try to check out the file first (CVS edit, Clearcase checkout,...) http://www.intellij.net/tracker/idea/viewSCR?publicId=3671 & http://www.intellij.net/tracker/idea/viewSCR?publicId=3544 & http://www.intellij.net/tracker/idea/viewSCR?publicId=12095 & http://www.intellij.net/tracker/idea/viewSCR?publicId=4509 (I cannot believe I found 4 duplicate of the same thing!!!)
• Introduce Parameter cannot be called if local variable is selected (http://www.intellij.net/tracker/idea/viewSCR?publicId=6593 )
• Add "Preview changes" to the "Introduce Constant" refactoring (http://www.intellij.net/tracker/idea/viewSCR?publicId=4518 )
• Option to select all checkboxex at once, not 1 by 1 (http://www.intellij.net/tracker/idea/viewSCR?publicId=5413 )
• Make complex refactoring dialogs non-modal (http://www.intellij.net/tracker/idea/viewSCR?publicId=7744 )
• Automatic check out of files in preview list when refactoring (http://www.intellij.net/tracker/idea/viewSCR?publicId=3544 )
• Keep preview of refactoring around (so people can further alter the result or check it) (http://www.intellij.net/tracker/idea/viewSCR?publicId=13129 )
• "Problems Detected" during refactoring should be accompaned with their associated Intention to fix them in place (http://www.intellij.net/tracker/idea/viewSCR?publicId=2848 ) See also on of the JRefactorit thread (http://www.intellij.net/forums/thread.jsp?forum=22&thread=23554&message=450763&q=7265666163746f726974#450763

General refactoring related requests
• Offline/batch refactoring tool to allow recording refactoring of a published interface and replay these on client code when they upgrade (http://www.intellij.net/tracker/idea/viewSCR?publicId=4009 )
• Deprecation on rename (http://www.intellij.net/tracker/idea/viewSCR?publicId=5195 )
• Provide intention action for changing signature of a method (http://www.intellij.net/tracker/idea/viewSCR?publicId=1194 ) Not really a refactoring but such an important intention I cannot believe it isn't there after 18 months!!!
• Listener interface for refactoring (http://www.intellij.net/tracker/idea/viewSCR?publicId=3634 )
• Open up the refactoring processors so plugins can call them ( http://www.intellij.net/tracker/idea/viewSCR?publicId=10522 )
• Open API: Make the rename/move refactoring extendable ( http://www.intellij.net/tracker/idea/viewSCR?publicId=12113 )

Time to vote (if you believe voting matters... ;-)!

Jacques

0
Comment actions Permalink

Heck, why more and improved refactorings? We can do it manually or use the free Eclipse. Use IDEA, if you want something like animated scrolling. Wishes from existing customers are less important than those from potential customers, because they already paid. ]]>

Tom

0
Comment actions Permalink

+ 1000000000000000000000000000

Need more refactorings! Especially "move Method" (to other class)...

0
Comment actions Permalink

Thomas Singer wrote:

<rant>
Heck, why more and improved refactorings? We can do it manually or use
the free Eclipse. Use IDEA, if you want something like animated
scrolling. Wishes from existing customers are less important than those
from potential customers, because they already paid.
</rant>


Ok, ok we need more refactorings. But we need Generics also, don't we?

Friendly,
Dmitry
--
Dmitry Lomov
IntelliJ Labs / JetBrains Inc.
http://www.intellij.com
"Develop with pleasure!"

0
Comment actions Permalink

Ok, ok we need more refactorings. But we need Generics also, don't we?


Yes, we need Generics - some times (I also voted for them), but do we
really need AspectJ or just another GUI-builder (just examples - don't
want to start a flame!) now?

You've created the first Java IDE with fully-integrated refactorings. A
lot of your user base bought IDEA because of this refactoring support.
But it's not done, there still is enough room for improvements. Why you
neglect IDEA's core features? Yes, I know the answer - time constraints.
Although Valentin said, that IDEA 4 (I prefer not to add ".0" because it
looks buggy) is planned to be released end of November, I guess it will
be at best end of December. So there is still some time to feed our
hungry refactoring mouths. Who cares, whether IDEA 4 will be released on
15th January?

Tom

0
Comment actions Permalink

Thomas Singer wrote:

>]]>..


A feature-absence-related pain-level poll on the whole community would
be the only democratic way to know what the people need, and want.


Level 1 : unbearable pain.

I can't stand it. I quit.
If feature X is not in the next release, I will not purchase a
new/renew my license.


Level 2 : it hurts badly.

I'll bite the bullet, but it hurts.
Today, abandoning IDEA would be worse than seeing feature X not
integrated, but I'll start looking at alternative IDEs.


Level 3 : it hurts.

I can live without it, but my productivity will suffer. It looks
like IDEA is loosing its edge.
If if is not in the next release, my pain level will increase.

Level 4 : itch

I can live without it, but it would have helped me/been nice, and
cool.
If if is not in the next release, my pain level will increase.

Level 5 : too bad.


Level 6 : it's ok, don't bother.



But this is not a democracy.

Alain

0
Comment actions Permalink

Thomas Singer wrote:
> Who cares, whether IDEA 4 will be released on 15th January?

This is not a new, but I like the idea of more frequent official
releases (every 6-9 months), with less new features.


Alain


0
Comment actions Permalink

On Tue, 30 Sep 2003 12:44:51 +0400, Dmitry Lomov (JetBrains) wrote:

Ok, ok we need more refactorings. But we need Generics also, don't we?


Regarding new refactorings, if PSI settled down and was officially opened,
third party refactorings could ( in theory ) be "easily" made...


--
"It's all in the heat of the moment, it's all in the pain..." Devy.
Mark Derricutt @ mark@talios.com @ talios.blog-city.com

0
Comment actions Permalink

On Tue, 30 Sep 2003 07:57:57 +0000, Johannes Schneider wrote:

Need more refactorings! Especially "move Method" (to other class)...


I'd like to see things like "Move method into new class.".

Currently you can't move a non-static method, but I'm sure it's possible.
The other side of this is "extact method into new class."

Eg:

public boolean doSomething() {
boolean result;
if ( bar > 20 && foo < 3 ) {
result = false;
} else {
result = true;
}
return result;
}

This could be extracted to:

public boolean doSoemthing() {
boolean result;
result = new NewClass().doSomethingExtracted();
return result;
}



--
"It's all in the heat of the moment, it's all in the pain..." Devy.
Mark Derricutt @ mark@talios.com @ talios.blog-city.com

0
Comment actions Permalink

This is not a new, but I like the idea of more frequent official
releases (every 6-9 months), with less new features.


I also would like it if there would not be a two months pause after release.

Tom

0
Comment actions Permalink

Thomas Singer wrote:
>> ..I like the idea of more frequent official
>> releases (every 6-9 months), with less new features.

> I also would like it if there would not be a two
> months pause after release.

I think its related :
big releases => big effort => big pause needed


Ideally, I would advocate a continuous release scheme, but I understand
that it's not possible/practical technically.
A compromise would be welcome.


Alain

0
Comment actions Permalink

Definately need the refactorings. This was your niche to start with, don't give up on it.

0

Please sign in to leave a comment.