Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

A modern IDE wouldn't be taken seriously if it didn't have a good editor with syntax highlighting, comprehensive warnings, and a source-level debugger. And there are many more tools/IDE features that programmers find essential:

  • Refactoring transformations
  • Unit testing support
  • Source code control integration

Yet, there are still many good tools that don't have the exposure and usage that they should. For example, the following tools are usually expensive or hard to find for a given language:

  • Automated GUI testing
  • Program slicing (e.g. CodeSurfer -- useful for finding what statements can affect another statement)
  • Test coverage (depending on your language, this can be very easy to find, or quite difficult)
  • Points-to analysis ("Do I really need to make this list concurrent, or will it ever be accessible by one thread anyway?")

Partly it's an issue of education and awareness, and partly it's because IDE makers are often too busy supporting the next version of the language to dedicate resources to developing these secondary tools.

What features are missing in today's IDEs? What secondary tools should really be primary? What makes them so helpful?

That is, what features do you think you'd use every month, or every day, if the tool was available? Please consider tools that both exist or should exist. For a tool that should exist, make sure the idea is feasible.

share|improve this question
    
Duplicate? programmers.stackexchange.com/questions/6834/… –  AShelly Oct 26 '10 at 15:22
    
Hi AShelly, thanks for asking. I would say this is not a duplicate: This question is about what features could be common with IDEs but aren't. The question you posted is related because it is about IDE features, but has a different focus (i.e. what is impressive). Some of the answers may overlap, like the reference to backwards debuggers. –  Macneil Oct 26 '10 at 16:16
    
I don't find any of those features essential to my IDE... To development, yes, but not necessarily an IDE. –  alternative Oct 26 '10 at 19:08
    
Please note that many of these things exists for IDE's. They just happen to be very expensive. Is that part of your criteria? –  user1249 Aug 22 '11 at 15:18
    
@Thorbjørn: Yes, you can think of "expensive" as "secondary." But our expectations for what a free (Eclipse) or minimal cost (XCode) IDE has is growing and will change over time. –  Macneil Aug 22 '11 at 19:14
add comment

8 Answers

up vote 5 down vote accepted

class diagram generation

I actually had a discussion about this with another developer friend of mine recently and we agreed that no-one really writes or maintains a UML diagram anymore - and they shouldn't. Looking at one for a minute or two, on the other hand, can tell you a lot about a system or set of classes.

The key is that it has to be generated because the workflow goes like this:

  1. Generate UML for section of codebase
  2. Look at it, confirm assumptions about the organization/layout of the classes, spot any inconsistencies, etc.
  3. Destroy diagram(s)
  4. Continue coding

It's not easy, (the layout usually gets mangled) and it doesn't have to be UML Spec x.y compliant, but I think it's a tool sorely overlooked.

share|improve this answer
    
+1 - I've done this exact thing in VS. It's convenient when you're coming into a preexisting code base and want to get a good overarching view. –  Daniel Joseph Oct 26 '10 at 20:55
add comment

My primary IDEs are Visual Studio 2008/2010 and NetBeans. One feature that is common to both that I use frequently is the Database Designer tool. When I am starting a project, I find it invaluable to be able to quickly design my database tables and have a visual representation of my work.

The visual representation allows me to get some feedback that what I am creating matches my mental model. Often, the fingers do not translate the brain's intention with 100% efficiency.

Also, I just hate typing out verbose SQL commands.

share|improve this answer
add comment

Show better alternatives of a piece of code

Its very rare in the IDEs that I've experienced for them to suggest alternatives to a piece of code. For example, suggesting if(something) return true; else return false should be replaced with return something. Less obviously, replace list.size() == 0 with list.isEmpty().

In Java land, Netbeans does this to some extent, but isn't all that good. IDEA does this pretty well but most of the best features are hidden in the commercial version, which is frustrating for an open source developer.

share|improve this answer
1  
CodeRush! for visual studio does some of this (in some cases, too much IMO). –  Steve Evers Oct 26 '10 at 19:30
    
Although I like PyCharm, I've been tempted to turn off its code-suggestions. It keeps wanting to turn my list comprehensions into for-loops, and other strange ideas, none of which I have used yet. –  Cyclops Aug 22 '11 at 18:02
add comment

I'll repeat my answer from the linked question, since it applies to this one:

Type Checking for Dynamic Languages

As long as your code doesn't get too 'meta', an IDE for Ruby or Python or a similar language with dynamic types should be able run a background task which:

  • for a given function, determines all the possible classes that will get passed in as arguments
  • for those classes, ensures they respond to all the methods invoked by that function
  • presents a list of the incompatible classes with the missing methods you need to implement

This would be better than waiting until runtime to discover a 'type error'.

share|improve this answer
    
So basically, a compiler? :P –  Mason Wheeler Oct 26 '10 at 22:32
    
well, a partial compiler. I wouldn't expect it to actually generate runtime code, and I'd expect it would miss some things, but an advance warning of many errors would be great. –  AShelly Oct 27 '10 at 6:35
add comment

integrated unit testing

I've use plugins like CodeRush! and testdriven.net, both of which are good but could use some UI improvements.

  • Colouring class names in the solution according to test results
  • Better output window that allows (more-obvious in some cases) double-click to go to the test/code under test upon failures
  • Integrated code coverage (imo, code coverage and unit testing should be parts of the same tool)
share|improve this answer
add comment

I wish my IDE could write code for me. Sounds simple, but I've built a custom code-builder to build classes for me based on attributes and behaviors I specify in a UI. Having the code builder generate comments also takes a lot of work away, as I always comment all private members, public attributes, and private and public methods.

share|improve this answer
    
Problem with code generators is that you debug something else than you originally wrote. Then when you have fixes they were found in the generated code, but you need to have them back in your original code. If you cannot do that easily you essentially just have a fancy wizard. –  user1249 Aug 22 '11 at 15:20
add comment

Context sensitive search

I want to find all call to this method of this class, not everthing that has the same name. Visual Assist tries hard but doesn't quite work, and the built in find references in Visual Studio is only a little better than find in files.

Class and Method code generators

I don't want to have to write the boiler plate for these, I've got better things to do with my time. The ones in Visual Assist work pretty well.

share|improve this answer
    
eclipse can generate those with QuickFix, its sad that your doesnt have the same refactoring capabilities. –  IAdapter Oct 27 '10 at 15:40
add comment

Be Faster, More Responsive, Use Less Memory

I have personally written an IDE - well actually and IDE plugin, and the biggest complaint is that it is too big, too slow, etc.

Right now things like VIM are back in vogue, so it is a good time to say that IDE's need to slim down a little.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.