Early comments on Irida features


Well the features list is posted:
http://www.intellij.net/eap/products/idea/irida.jsp. Looking it over, I'm extremely impressed. If you guys can pull it off, you'll have yet again accomplished something amazing (but you knew that already).

Thoughts on specific features

+XML tag completion inserts required subtags
Oh, this will be nice.
+Refactoring In XML Files
Not sure what this means, but I'm sure it will be great. Tag/attribute renaming alone would rule.

+HTML/CSS/JSP/J2ME/J2EE support
Couldn't care less, as I don't use these technologies myself, but the line items look pretty solid (JSP in particular). Hope it helps you sell a lot of licenses.

+'Move Method' refactoring
+'Inline Superclass' refactoring
+'Safe Delete' should be able to remove class from class hierarchy
+'Replace Method Code Duplicates': ability to find duplicate method code fragments in multiple files
+'Introduce Variable' from a portion of a string literal
+'Change Method Signature' to work indeep in call hierarchy
+'Change Variable Type' refactoring

As always, JetBrains shows that they understand what developers actually have to do with their time, and how supple and responsive refactoring automation can not only ease our drudgery, but make us better at our jobs. Can't wait to see these.

+Favourites (shelf) view
In other contexts, shelves have been a godsend. In IDEA, the Ctrl-N family of navigation tools may already be to powerful for me to use a shelf much.

+'Move' refactoring via drag and drop
If this is drag-n-drop in the project/package view, this will be mighty. If so, I would also suggest also supporting rename in the package view, similar to how it works in many file browsers (Click-pause and replace the file name with a tiny editor).

+Customizable toolbar
Like the shelf, this is another feature that IDEA might already be too good to need. I rarely need to use the toolbar as is, other than for Run profiles.

+Close all unmodified files
I was hoping for "Close all but pinned", but this will probably do.

+Project loading can be cancelled
Bliss, simply bliss.

+Intention configuration pane in IDE options
Late, but appreciated.

+IDE Settings - 'Errors': saveable profiles
Yeah!

+Subversion integration
Excellent

+Analyze dependencies to work the opposite way
Very nice.

+I18N inspection: convert all String constants to i18n calls
Good to see this on the plate again. I was sad to see it dropped from Aurora way back when.

+'Structure View' API
+User-defined live template functions
+Ability for one plugin to export API to another
+Ability for inspection tool to inspect non-java files
+Ability for inspection tool to provide reasonable defaults
+More (than error/warning/do not show) report severity adjustments

If you'll excuse me, it looks like I've got a lot of plugin coding to do. These will all be very nice indeed.

+Reorder methods on reformat
Dipping your toes into some tricky waters, here. Good to see.

+Move selected line/block 1 line up/down (structurally)
I would guess I currently use the LineMover plugin about once per minute, and am consistently flummoxed when I have to use applications which don't support it. Good to see this functionality in product.

+Navigate to class/file/symbol: automatically turn search in libs checkbox on when no project items match
This could be either really annoying or really handy, but I'm betting on annoying.

+Navigate to class/file/symbol: ability to display more matches
+Quick view implementation (with navigation ability)
Very cool, although I must say it looks like you're running out of ways to improve navigation. Diminishing returns are setting in.

Setting up a logging breakpoint: select expression then shiftclick on the gutter
Very nice. Death to System.out.println.

+Variable name completion based on unresolved references
I can't tell you how much time this will save.

--Dave Griffith

0
34 comments
Avatar
Permanently deleted user

I don't get it. Could you provide an example where I might want to create such a rule set?

Mike

0
Avatar
Permanently deleted user

I will take IDEA plugin development for example.

JetBrains rename a class in the OpenAPI (their published API). Since the class is in the set of classes that are monitored, the refactoring is added to the list of distributed refactorings.
When JB release this version, they would release the distributed refactorings as well.
Plugin developers who wants to upgrade to the latest version of IDEA would first pick up the distributed refactorings done on that version and apply it to their plugin. Things that can be redone automatically would be automatically applied. Things that would require human intervention would be highlighted to help the migration.

This can obviously map to anytime a product developed by a team is used in another team's product. Since the refactorings of the first team cannot impact the downstream teams you need a mechanism to facilitate communication and automate reexecuting the published api refactorings.

Am I making sense?

Jacques

0
Avatar
Permanently deleted user

Hmm, I have to admit I've never even though of that Jacques. That really is a great idea, it even has uses for those of us who have no interest in plugin development.

0
Avatar
Permanently deleted user

+1 for number 1.

More and more of our development involves frameworks with text/xml configs that reference classes and or methods. Refactoring can be a little tricky with these. (I'm talking of frameworks like Spring, and even Tapestry and struts.) The Search Strings function of refactoring goes only so far.

I guess as an extension of this point, I'd like general support for Dependency Injection frameworks, like Spring and Picocontainer, maybe Hivemind. At least the base level of DI functionality, with the more framework specific features reserved for plugins? (like Spring's AOP).

--pete

0

Please sign in to leave a comment.