Menu

Stories

Developers
2002-04-16
2002-12-06
  • Sven Reichard

    Sven Reichard - 2002-04-16

    The following is a list of more or less desirable features that could be elaborated into stories. Please feel free to comment on and add to them.

    Note that there all from the user's point of view.

    GUI related
    - Windows GUI
    - Linux GUI
    - integration with a build system (compiler, make)
    - integration with revision control
    - integration with unit testing framework
    - project management

    Editor related
    - source code editing (duh)
    - source code formatting, adjustable to coding standard
    - syntax highlighting
    - identifier completion
    - class browser
    - editing method-based (as opposed to file-based)
    - find declaration/definition of given identifier

    Refactoring related
    The following refactorings should be available at the touch of a button whenever they are applicable:
    - rename variable
    - rename method
    - split temps
    - replace temps by query
    - extract method
    - form method object
    - form abstract base class
    etc. (see Fowler)
    The refactoring should be available only if we are sure it preserves the semantics.

    As I said above, this list is incomplete and mostly intended to start a discussion. The features above need to be elaborated a bit.

    Any comments?

     
    • David Barker

      David Barker - 2002-04-16

      As for editor stuff, why don't we just integrate with existing editors - vim, jedit, emacs...

      I think the easiest way of doing this would be to create a command interface to whatever we come up with that can answer questions about classes, E.g. what members they have, what they inherit from ... and then do each editor integration by using this command interface...

      if this is deemed to crap, we could make a server of some sort to do the same thing.  - for class browse info to the the refactorings themselves.

      At any rate, I'm not going to vote for writing our own editor.  that's crazy talk! :-)

      As for build system.. I'm really tempted to say "go add a line to you build setup" that tells the refactoring system tat a file has changed.

      We could let the user declare 'special interest' in a set of files, and have the refactoring system periodically check the timestamp of these files to automatically get up to date.

      Does any of this see sensible.
      I know I'm leaning toward a client-server model here.  but hey - what's up with that?

      Dave.

       
    • Sven Reichard

      Sven Reichard - 2002-04-16

      Dave,

      the point is, I don't care about implementation at this point. As a user, I want to be able to edit the source files or at least the class members. If that means, fire up emacs, M-x c++-refactoring-mode, that's fine with me.

      The other features are intended in the same manner. As long as I can do these things I (wearing my user hat) don't care how that is accomplished.

      Sven

       
    • David Barker

      David Barker - 2002-04-16

      Sorry - my failure to read plain english.

      What do these things mean to you?
      - integration with revision control
      - integration with unit testing framework
      - project management

      Dave.

       
    • Sven Reichard

      Sven Reichard - 2002-04-16

      ok, let's type that again.

      Sorry, my failure to write plain English :)

      These features are intentionally sketchy and not necessarily high priority or even desirable. They assume a user who doesn't want to open a shell to

      - check out a library from a repository
      - add a few classes
      - test these classes
      - test the whole library
      - check things back in

      I know this goes in the direction of an IDE and I don't know if that is what we want.

      Anyway, these features have to be fleshed out quite a bit. Is there anything you would like to see?

      At least some sort of discussion got started :)

      Sven.

       
    • Sven Reichard

      Sven Reichard - 2002-04-21

      The user supplies the following:

      - the current name of a variable;
      - the location of its declaration (e.g., file and line number);
      - the desired new name.

      The system checks if the renaming leads to any conflicts. If it does, it emits an error message. Otherwise, the declaration and all references are changed to use the new name.

       
    • Shaun

      Shaun - 2002-11-07

      David,
        I'd like to see integration with MSVC 6/.Net and Perforce (Source Control - http://www.perforce.com\)...  Perforce provides a free SDK and the server can be downloaded also.

      -Shaun

       
    • Andre Baresel

      Andre Baresel - 2002-12-06

      I'm not sure if the integration to visual studio is a good idea. In general there might be a big developer community using this tool -- including me. The problem I see is that another microsoft tool gets features that aren't supported by any other development tool ...

      So I suggest - lets see if there's any other solution with a little distance to microsoft.

      -- andre baresel

       
      • John Edward Judd

        delurking for a moment.

        Seeing as I'm a big user of MS tools, well... ;-)

        I'd see integration with VS in the form of an add-in that links to an interface provided by CPPRefactory. There is no reason that the same interface couldn't be used to build tools for any other environment.

        Doing it that way wouldn't exclude us MS users who are longing for quality tools like JRefactory. :-)

        Back to lurking.

         
        • Andre Baresel

          Andre Baresel - 2002-12-06

          well, me as a ms visual c developer would say the same! After all it is important to have that open interface to other C++ IDE's so that any other tool can have this important refactoring capabilities ...

          -- andre baresel

           
    • Baptiste Lepilleur

      The refactoring library is completly independent from VC++ add-in (we couldn't test it easily otherwise). The add-in is just a client like any other. At the current, you only need to implement a subclass of TextDocument for your IDE. This is probably easier to do for CodeWarrior than it is for VC++.

      Since I'm using VC++ 6 at works, it is natural for me to work on integrating the refactoring tools with it. Though, I'll probably switch to VC 7 in a few months. It seems that it is possible to implement a specific undo/redo for a custom command in VC 7. This would provide a perfect integration to undo/redo a given refactoring even if it operated on multiple files!

      If any one want to works on add-in for other platforms, just let me know and we'll see the easiest way to do it.

      Baptiste.

       

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.