I absolutely love IntelliJ. It is by far the best IDE I've ever used. Just a
few suggestions to make it just a bit better.
(Sorry if any of these are repeats)

1) I tried to use the Extract Method refactoring today, but, upon
recognizing that my particular situation involved multiple return values, I
realized that I must use the Replace Method with Method Object (Fowler, 135)
refactoring instead. While this was a reasonably easy refactoring to
perform, it was mostly a rote task, and therefore would be a logical
candidate for automation.

2) I was realizing that the interface for typing a live-template is
extraordinarily convenient. I believe that it would be beneficial to use
this interface instead of dialog boxes for some of the currently existing
refactorings. Extract variable and rename immediately come to mind, for
instance. In the case of extract-variable, I would suggest that hitting
ctrl-alt-v performs the extraction and places the user in a live-template
mode where they can type the variable name, which will update in realtime in
both the variable declaration and usages. In the case of rename, I would
suggest that hitting rename puts them in a live-template mode where they can
choose the new variable name. When they exit the mode (via tab, or other
means), the usage and confirmation panel pops up. I think I would find this
method less interruptive than dialog boxes, especially if there are multiple
variables that I might want to rename (parameters in extract-method, for
instance).

3) This is definitely a repeat, but the ability to open multiple source-code
browsing windows at the same time is absolutely vital. Currently I am having
a hard time convincing anyone in my company to switch to IntelliJ, soley for
this reason. Everyone in my company has multiple monitors, and they all want
to open two or three .java files at the same time. As soon as this feature
is added, I expect most of my coworkers to make the switch.

4) This is probably a separate product (or PhD thesis) altogether... but
have you considered whether there is an appropriate way to do a "diff"
between two java-files that encorporates the parsed structure of the file,
and perhaps recognizes likely refactorings. Current version-control systems
that I know of are still using line-by-line 3-way merge systems for
resolving concurrent modification. Clearly a system that can recognize
refactorings and other higher-level changes could allow significantly better
automated resolution for concurrent modifications, not to mention the fact
that a much better visual-diff could be presented to the user if they were
shown the refactorings that occurred, rather than just line-by-line changes.
(As an example of visualization: if someone changes "x" to "y" in one
location, it highlights this change in a certain color, if they rename a
particular variable "x" to "y" in all occurences, this would highlight in a
different color -- the meaning of the diff is now much more apparent).
Unfortunately, I have this strange feeling that this problem is reducible to
detecting graph isomorphism, which I vaguely remember as being NP-complete.
But hopefully I'm wrong -- hopefully tree-isomorphism is substantially
simpler -- or maybe good approximations can be made. :)

Thanks for your time. I'd be especially interested in hearing anyone's
thoughts on (4).

-Dwight Rodgers


_______________________________________________
Eap-features mailing list
[EMAIL PROTECTED]
http://www.intellij.com/mailman/listinfo/eap-features

Reply via email to