Slashdot Mirror


First Commercial C++ Development Refactoring Tool

swrittenb writes "According to their recent press release, SlickEdit Inc. announced Visual SlickEdit® v9, the first commercially available development tool with C++ refactoring. Although this area has been studied, and non-commercial refactoring tools for C++ exist, how comfortable are people using an automated solution for refactoring with this particular language?"

63 comments

  1. sp by Anonymous Coward · · Score: 0, Troll

    You bums should use C#.

  2. Refactoring other languages... by NEOtaku17 · · Score: 4, Informative

    http://www.refactoring.com/tools.html

  3. We're already comfortable with compilers by orthogonal · · Score: 5, Interesting

    how comfortable are people using an automated solution for refactoring with this particular language?"

    Well, when you consider that a compiler is also "an automated solution for [code] refactoring", I guess anyone using C++ (or any other compiled language) is reasonably conformable.

    Since there are no constructors or templates or multi-expression tests ( "if( a && b || c && d )") in any machine's assembly languages, we all trust our compilers to generate assembly language that corresponds to the high-level language constructs we've actually written -- and in the case of the control expression to that "if" statement, we trust the compiler to know and follow the operator precedence for the language being compiled -- and in C and C++, the required "short-circuit" evaluation too.

    That said, a good bit of that trust -- for C++ and C -- reposes in rigorous language standards and (more or less, I don't want to argue about language (mis)features or hacks for backward compatibility) well thought-out language designs.

    (That's one of the many benefits of a rigorous, documented language standard, by the way -- do you know if, in scripting language "S"( where "S" may be Perl, windows scripting host, visual basic, or what have you), short-circuit evaluation of logical operators takes place, or if there's a sequence point between each one? Not to bash any one language, but for Perl, deja-googling shows sequence points have been an unresolved issue since 1998.)

    To the extent that a refactoring tool's design is based on standards and on thoughtful and an open -- not proprietary -- processes that bring in opposing and skeptical views, as do the design of C and C++, I'd be reasonably willing to, in Reagan's words, "trust but verify". But if the refactoring tool is the proprietary product of a closed shop, I'll be far less confident that the Marketing Department didn't;t have too much of a had in product "design".

    But however the products comes to be, the proof remains in the use -- let's see how the automatic refactoring compares over several real-life projects before trying to judge.

    1. Re:We're already comfortable with compilers by Anonymous Coward · · Score: 5, Insightful

      Well, when you consider that a compiler is also "an automated solution for [code] refactoring", I guess anyone using C++ (or any other compiled language) is reasonably co[m]for[t]able. (I assume that's what you meant.)

      Nope, it's not the same thing at all. The transformation from high-level to low-level code is much simpler than the converse; that's why you can't decompile a native-code executable, even an unstripped one, and get beautifully formatted and readable code out of it.

      I trust my compiler to output valid machine code precisely because machine code is so simple. C++ is very complicated; if I were a C++ programmer (which I'm not, I prefer simpler and safer languages) I'd definitely be keeping backups of my unrefactored work for a while.

    2. Re:We're already comfortable with compilers by p3d0 · · Score: 1, Insightful
      I trust my compiler to output valid machine code precisely because machine code is so simple.
      Then clearly you have never written a compiler.
      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    3. Re:We're already comfortable with compilers by thelenm · · Score: 1

      Not to bash any one [scripting] language...

      Ha, good one!

      --
      Use Ctrl-C instead of ESC in Vim!
    4. Re:We're already comfortable with compilers by Anonymous Coward · · Score: 0

      I think you mean "Then clearly you have never written an optimizing compiler." Correct code generation isn't trivial, but when was the last time you got misgenerated code out of gcc -O0?

  4. Patent? by Anonymous Coward · · Score: 1

    They way things seem recently they'll file a patent in short order.

    Personnally I think pico, nano, and notepad are the best refactoring tools out there, and two of these were commercial apps so I don't see how this is the 'first' commercial refactoring tool.

    1. Re:Patent? by Anonymous Coward · · Score: 0

      of course refering to find/replace.

  5. Extremely Uncomfortable by trouser · · Score: 2, Funny

    I, for one, am extremely uncomfortable with the idea of automated code refactoring in C++ for a number of very good reasons most of which have to do with those little yellow post-it notes that people keep leaving on my monitor with words like 'the' and 'when' written all over them in increasingly small, or decreasingly large, handwriting which makes me very nervous indeed.

    Thank you.

    --
    Now wash your hands.
  6. We have shit tools by QuantumG · · Score: 0, Offtopic

    we know it, we get over it. There's no unix version so I guess I won't even try this tool. Seems pretty sad that we can write a compiler but not a simple refactoring tool, but hey, no-one ever said parsing C++ was easy.

    --
    How we know is more important than what we know.
    1. Re:We have shit tools by 0x0d0a · · Score: 2, Funny

      Uh, the main page says "Supports Windows, Linux, UNIX" right smack dab in the middle of it.

      Of course, it's a tough sell to try to fight emacs and vi...

    2. Re:We have shit tools by Decaff · · Score: 1

      IBM's Eclipse can be used for C++. Works on Linux.

    3. Re:We have shit tools by arkanes · · Score: 1

      SlickEdit (you know, the thing in TFA) is based on Eclipse.

    4. Re:We have shit tools by The+Infamous+Grimace · · Score: 3, Interesting

      There's no unix version so I guess I won't even try this tool.

      Um, in addition to Windows, it supports:

      Linux kernel 2.4 and up
      AIX 5 and up
      HP-UX 11 and up
      IRIX 6.5 and up
      Solaris SPARC 7 and up

      ...all of which are UNIX.

      (tig)
      --
      Ignorance and prejudice and fear
      Walk hand in hand
    5. Re:We have shit tools by DAldredge · · Score: 1

      No, it is not. Slickedit sells a plugin for Eclipse, but Slickedit has been around for much longer than Eclipse.

  7. SlickEdit. by Spudley · · Score: 4, Interesting

    I've used SlickEdit for a while, and it is a very nice tool (even if we call it SlackEdit at the office). Their Diff tools (DiffZilla, etc) are probably the best I've used anywhere.

    I've only had the chance to use it under Windows, but I understand there's Unix and Linux versions available too.

    My opinion: If you're going to pay for an editor, this is a good one to pick.

    When it comes to refactoring, I can't comment - I've not used this version, so the feature is new to me. It sounds like an interesting feature, but in honesty, I can't see us making much use of it.

    --
    (Spudley Strikes Again!)
    1. Re:SlickEdit. by niteblade · · Score: 1

      Agreed. I have been using VS 5.0 for the past 4 yrs and love it. It really shines when you have a large code base, files scattered everywhere, and need to get up to speed on how the code works in a very short amount of time. Bob

    2. Re:SlickEdit. by Anonymous Coward · · Score: 0

      I tried to use the demo of slickedit to try it out, and it wanted to read the MAC address off of my ethernet card or something like that. I deleted it for its transgression.

    3. Re:SlickEdit. by DAldredge · · Score: 1

      It tells you it will do that on the damn download page. It isn't Slickedits fault you can't read.

  8. Sure, why not. by ndykman · · Score: 3, Insightful

    I don't have a problem with any refactoring tool if it allows me to see what changes it made (Kind of a no-brainer), and allows them to be undone if the results aren't too great after you do it. Even better is if they integrate with a tool's undo or redo, if they are hosted in an IDE like VS .Net, JBuilder, Eclipse, etc.

    Sure, it's tricky to insure that more complex refactorings do what they say, and sometimes they do change the semantics, but in a way you want. For example, moving methods up/down in a hierarchy.

    And the simple refactorings are still really useful. Rename X is just really, really nice.

  9. What I want by geirt · · Score: 5, Insightful

    I want a syntax cheker running while I am editing the source code.

    Example 1: When I am writing: "printf("Hello %d\n", "world");" I want a red line under "world", with a mouse-over stating: "Integer, not string expected in printf format string". I want this to happen while i type.

    Example 2: When writing: sinus(3.14); I want a red line under sinus(), with a mouse over explaining "Call to function sinus() without prototype" without running the code trough a compiler.

    I also want sane syntax highlighting. I want it to highlight the things that I look for when I am browsing trough lost of code. That is my function and variable names. All other should be kept in low key (eg. if while for int struct etc.). I am not sure if i want call to libc to be highlighted. Show me the important stuff, not the cruft! Editors are not too bad on this (or can be customized), but when I press print in emacs or use gnu enscript, it prettyprints all the wrong things, and hides away the important stuff.

    --

    RFC1925
    1. Re:What I want by WasterDave · · Score: 1, Insightful

      Example 1: When I am writing: "printf("Hello %d\n", "world");" I want a red line under "world", with a mouse-over stating: "Integer, not string expected in printf format string". I want this to happen while i type.

      Yeah, agreed, it would be savage. I'm busy, so you go code it up and I'll buy it. A plug in to XCode would be wonderful, thanks, and while you're at it do *something* to make all the other pop ups work properly.

      Gawd, all the shit about CASE tools, you would have thought someone like Rational would be all over this at $1k a seat.

      Seriously, get on with it. I'm busy.

      Dave

      --
      I write a blog now, you should be afraid.
    2. Re:What I want by Anonymous Coward · · Score: 4, Funny

      ..I want a syntax cheker..
      ..running the code trough a compiler
      ..I am browsing trough lost


      [cheapshot]
      I can't imagine why you feel you need a checker for the code that you type..
      [/cheapshot]

    3. Re:What I want by achesloc · · Score: 2, Informative

      Eclipse http://www.eclipse.org does something akin to what you describe. I am not sure if it will work for anything except java. Check it out.

    4. Re:What I want by jergh · · Score: 2, Informative
      Since you're using emacs you might want to take a look at Flymake -- "an on-the-fly syntax checker for Emacs".

      Description reads as:
      Performs on-the-fly syntax checks of the files being edited using the external syntax check tool (usually the compiler). Highlights erroneous lines and displays associated error messages.
    5. Re:What I want by Repugnant_Shit · · Score: 1

      That is my function and variable names. If you're using any kind of decent editory, just change the fonts/colors it uses.

    6. Re:What I want by Anonymous Coward · · Score: 0

      Back in my day we had to check twice before we punched the cards

  10. Good, This world needs more commercial C++ tools by Anonymous Coward · · Score: 0

    With VC.net being virtually the only viable C development suite(Borland is dead last I heard, and sucked anyway...CodeWarrior or whatever, isn't even worth considering) for Windows, its a good start...though a bit of a deviation from "The trueness" of open source software combined with compilers being made by CPU manufacturers...making RISC, etc. designs much easier, and getting rid of that pesky x86 thing...hell, I could design a better architecture, I would if I had the tools, already got a couple ideas on how to revamp the register structure for shorter instruction length and faster code(and no I dont mean just add more, faster, wider registers)

  11. Not the first by a long way by Decaff · · Score: 2, Informative

    IBM's VisualAge C++ has been around for a long, time. All the VisualAge products include powerful refactoring tools.

  12. Marketroids at their best by selfsealingstembolt · · Score: 2, Informative

    I just took a look at the specs and found the "refactoring"-features:

    - Rename
    - Extract Method
    - Encapsulate Field
    - Convert Local to Field
    - Convert Global to Field Instance
    - Convert Static Method to Instance Method
    - Move Static Field
    - Move Method
    - Replace Literal with Constant
    - Create Standard Methods
    It does not seem overly complicated to me, to implement these.

    Most of the features are simple search and replace operations. Just add some knowledge the compiler would have to the editor and it becomes quite easy to do.

    Just plain and simply marketing fuzz...

    --
    Keep open minded - but not that open your brain falls out...
    1. Re:Marketroids at their best by manavendra · · Score: 4, Insightful

      Most of the features are simple search and replace operations. Just add some knowledge the compiler would have to the editor and it becomes quite easy to do

      hmm... lets examine them then.

      Rename
      So say you want to rename A::foo() to A::bar(). But foo() is private - so the tool has to look only in the current file, while for protected the file and its children, while the entire project if its public. While its rather easier to limit private and public members, how about protected? What if there is B::foo() as well? what if B::foo() is used in A?

      Extract Method
      This usually works when you select a piece of code and want to extract it to a method. search and replace? umm yes. How about the method sanctity? Wouldnt the tool need to ensure your extracted method is remains unbroken? what about the variables used in the selected segment? Are they declared within the selection?

      Convert Local to Field
      A::foo() has "myLocal", and so has A::bar(). Upon refactoring, should "myLocal" be replaced within with the new field in A::bar() as well?

      Convert Global to Field Instance
      A::Global is made a field. But A::foo() has a local variable Global defined as well. Should the tool do its job silently or inform you about this?

      Convert Static Method to Instance Method
      ditto

      I haven't read the specs of the tool, so I don't really know if it performs all this validation. I sure hope it does, if they want to sell it to anyone else other than mom and pop

      Just my $0.02

      --
      http://efil.blogspot.com/
    2. Re:Marketroids at their best by Chemisor · · Score: 1

      > What if there is B::foo() as well? what if B::foo() is used in A?

      B::foo() is a completely separate function from A::foo() and should not be renamed. It is easy to tell which one A wants to call because the call method would differ (b->foo() as opposed to foo()).

      > A::foo() has "myLocal", and so has A::bar(). Upon
      > refactoring, should "myLocal" be replaced within
      > with the new field in A::bar() as well?

      No. myLocal in bar() is used for a different purpose from the one in foo(). There is no way to automatically determine when bar() should be using the new field too or how. Therefore, both variables have to be extracted separately.

      > A::Global is made a field. But A::foo() has a
      > local variable Global defined as well.

      First of all, it is good practice to have different naming conventions, separating your globals, member variables, and locals. A common method of doing this is by using prefixes (g_ for global, m_ for member, none for local). In your example, extraction of A::Global should not be allowed without a rename.

      > I don't really know if it performs all this
      > validation. I sure hope it does,

      While automatic checking for the above problems is nice, it is not something one should have to rely on. Refactoring can be done without any tools at all. No matter what fancy search-n-replace macros you define, you still have to think.

    3. Re:Marketroids at their best by manavendra · · Score: 1

      Oh I absolutely agree with your observations. I am in no way disinclined about the tool having to think and make informed decisions when replacing methods, variables and selection blocks and based upon access modifiers

      I was just elaborating on the fact that such a refactoring tool is more than search and replace, as was mentioend.

      IMHO, refactoring tools make can be quite useful in tidying up the code, be it yours or written by someone else. However, to categorize them as a glorified search/replace tool is misleading, and undermining their usefulness

      --
      http://efil.blogspot.com/
    4. Re:Marketroids at their best by E_elven · · Score: 1

      These are menial changes -something you should have done in the first place. Actual refactoring means changing the way the code works, not the way it's laid out.

      --
      Marxist evolution is just N generations away!
    5. Re:Marketroids at their best by Anonymous Coward · · Score: 0

      Not to mention, as someone who does a lot of refactoring, many of the simpler refactoring steps are tedious, boring, error prone, and time consuming.

      Even if it were'just search an replace' anything that makes it easier to do so would still be quite welcome.

    6. Re:Marketroids at their best by cakoose · · Score: 1
      What if there is B::foo() as well? what if B::foo() is used in A?
      B::foo() is a completely separate function from A::foo() and should not be renamed. It is easy to tell which one A wants to call because the call method would differ (b->foo() as opposed to foo()).

      Sure, but what if you had 'x->foo()'? You have to know the type of variable 'x'. This is not a simple search/replace operation, unless you can do type analysis with a regex (you can't). Then again, maybe your editor does search/replace with CFGs.

      Oh, what was that? C++ cannot be type-checked with a CFG either? Wow, you must have some sort of turing-complete search/replace. That is sooo awesome! Now all you have to do is write half a compiler every time you want to rename a method.

    7. Re:Marketroids at their best by Chemisor · · Score: 1

      > what if you had 'x->foo()'? You have to know the type of variable 'x'.

      Sure. The compiler needs to know it too, so all the necessary headers will already be included.

      > This is not a simple search/replace operation, unless you can
      > do type analysis with a regex (you can't).

      If you intend to write your tool entirely in regex, good luck to you. You already need some type analysis to match types to variables for field extraction. Parsing type declarations is not that difficult and then you just maintain a type tree and look things up when you need them. Really, if you have ever write a compiler, you'll discover that it is one of the simpler parts of the project.

    8. Re:Marketroids at their best by cakoose · · Score: 1
      If you intend to write your tool entirely in regex, good luck to you. You already need some type analysis to match types to variables for field extraction. Parsing type declarations is not that difficult and then you just maintain a type tree and look things up when you need them. Really, if you have ever write a compiler, you'll discover that it is one of the simpler parts of the project.

      The original post suggested that the marketing department was giving fancy names to simple search/replace operations. All I was saying is that conventional search/replace (even with regular expressions) is not powerful enough to perform those refactorings.

      As you said, the editor would require functionality equivalent to the parsing and type-checking parts of a compiler. To perform clean refactorings, the editor would probably also have to analyze flow control to trace variable definition-use chains. Also, C++ is not easy to parse.

  13. Job Security Endangered by 4of12 · · Score: 2, Insightful

    how comfortable are people using an automated solution for refactoring

    A fair number of proficient C++ programmers make a great living refactoring other peoples' mistakes.

    In an average project, most objects and methods are still damn far from being prime.

    --
    "Provided by the management for your protection."
    1. Re:Job Security Endangered by manavendra · · Score: 1

      Well I understand the concerns about security, but if you have ever used such tools (and you probably might have), you'd find that these are not some "magic" tools that would do all the refactoring work for you.

      1. These tools don't make decisions about what to refactor - you tell them what has to be done, they just do it for you.
      2. Humans tend to introduce errors in tedious, monotonous situations.

      Proficient C++ programmers are paid and valued for the knowledge they bring with themselves, which is not limited to refactoring.

      Finally, by analogy, if this tool presents a threat, then so does every IDE, debugger or performance tool. I never heard of anyone losing a job because of a new IDE being introduced. Tools are there for you to use, and help you increase productivity and efficiency.Feeling threatened from them won't get you anywhere.

      --
      http://efil.blogspot.com/
    2. Re:Job Security Endangered by The+Infamous+Grimace · · Score: 1

      In an average project, most objects and methods are still damn far from being prime.

      Tell me about it. I'm a self-taught amateur who's trying to write a fairly complicated piece of software, and I can tell you that my code is far from being 'prime'. Lots of stuff that would be better as templates, or just resolving a pointer and passing it as a ref to an equivalent function ( i.e. operator=(myObject&) and operator=(myObject*) ) instead of rewriting what amounts to the same function only with a pointer instead of a ref. So here's a question: what's the difference between general optimizations and refactoring? Or is there?

      (tig)
      --
      Ignorance and prejudice and fear
      Walk hand in hand
  14. 'the features are simple search and replace ops' by Anonymous Coward · · Score: 0
    The operations aren't simple search and replace operations, that's why they're called refactoring operations instead of "search and replace" operations.

    Imagine a scenario like this: for(int i = 0 ; i < 10 ; i++) { ... } If you do search and replace for i, you'll break the "int".

    That's where refactoring steps in.. it's sometimes just search'n'replace, but usually much more. Imagine renaming a field with OO features like inheritance and you should start to see the bigger picture.

  15. It's not an automated solution by Chemisor · · Score: 2, Informative

    > How comfortable are people using an automated
    > solution for refactoring

    It is not possible to automate (as in "without any human intervention") refactoring because it requires understanding how the entire project works. Any tools you create may help, but they do not obviate the need for thinking and redesigning, the two tasks the computer is incapable of doing.

    1. Re:It's not an automated solution by Anonymous Coward · · Score: 0

      It is not possible to automate (as in "without any human intervention") refactoring because it requires understanding how the entire project works.

      It depends on your definition of refactoring. Simple forms of refactoring (renaming things, extracting code) can be automated. It sounds like you are simple trying to be pedantic.

      Any tools you create may help, but they do not obviate the need for thinking and redesigning, the two tasks the computer is incapable of doing.

      Yep, that sounds pedantic. Thank you, Captain Obvious.

    2. Re:It's not an automated solution by Anonymous Coward · · Score: 0

      Refactorings are behaviour preserving; they do not change the way a program runs. They are primarily done to ease the use of the code, not to make improvements in performance. Thus, you do not need to understand how the entire project works (something that is almost impossible in large-scale code bases -- do you suggest these cannot be refactored?) in order to perform a refactoring.

      How can you claim that computers are incapable of redesigning? As a general system, consider genetic algorithms. Even suggesting redesigns based on some knowledge of what 'good code' looks like is not impossible, but in fact quite possible.

  16. Well, see, it's like this... by devphil · · Score: 1


    You toss around demands like "while I type" and "without running a code through a compiler." Now tell me just what you think is going to be doing the checking.

    Detecting the examples you gave require at least a parser, and some minimal semantic analysis. Parsing takes up the bulk of compiling time in C and C++, and you're not going to get that in a heartbeat.

    How often is this mini-compiler supposed to check your code? Constantly? It'll be siliently getting errors in the background, as it waits for you to type the closing parenthesis and ending semicolon, and the CPU will be pegged as soon as you start the editor, but you'll get your red lines "as you type"... more or less.

    Parsing is expensive. There's a reason why syntax highlighting doesn't go beyond heavy regexing.

    --
    You cannot apply a technological solution to a sociological problem. (Edwards' Law)
    1. Re:Well, see, it's like this... by Anonymous Coward · · Score: 0
      and the CPU will be pegged .... you'll get your red lines "as you type"... more or less.
      This may or may not be the parent poster's intent, but it looks like you're saying you'll be redlining the CPU. :)
    2. Re:Well, see, it's like this... by bay43270 · · Score: 2, Informative

      I can't speak for C++, but in the Java world most of these checks are built into the IDEs. Eclipse needs to compile the source to show most errors (which it does every time you save a file). It's a bit of a pain in my opinion. I've gotten used to IntelliJ IDEA, which parses the file with every keystroke. I assume it doesn't do this from scratch each time, since it's still very responsive. It also keeps some sort of index in memory so it can quickly show bindings to other source code (this method is an implementation of this interface, for example). The markup for these links are updated with every keystroke without pegging the CPU.

      That said, I doubt this is as feasible with C++. Java IDEs can use type information to provide these messages without any assumptions. Managed C++ may have access to these features, but I haven't played with that to know what type info is available.

    3. Re:Well, see, it's like this... by geirt · · Score: 1

      I agree. Yes, parsing is expensive, but it isn't so expensive that it can't be done. Word does spell and grammatical checking on the fly. Electronics design software does "on the fly" forward and backward annotation while you work (checking that the circuit layout is consistent with your schematics). I have no problem understanding that the editor needs to do a lot of what is requires by a compiler. But it can be done.

      --

      RFC1925
    4. Re:Well, see, it's like this... by iroberts · · Score: 1

      Parsing is expensive. There's a reason why syntax highlighting doesn't go beyond heavy regexing.

      It's worth noting that in Eclipse (and from what I gather, most other IDEs), the assistance provided is done not on the basis of a full file reparse each time something new is typed. Rather, the IDE keeps the parse around after the initial parse, and when it notes that a portion of the document has changed, it usually is able to get away with just reparsing a small area around what was changed, and modify it's parse tree accordingly.

    5. Re:Well, see, it's like this... by devphil · · Score: 1
      that the editor needs to do a lot of what is requires by a compiler.

      The smart way to do this, of course, is by making the editor able to share a front-end with the compiler itself. Possibly even make them all part of the same program, like many of the IDEs.

      I know of a variant on GCC where the front-end would dump a kind of XML representation of the program's identifiers, for cross-reference building. An editor would better off asking the compiler to do the work like that, rather than doing it on its own.

      --
      You cannot apply a technological solution to a sociological problem. (Edwards' Law)
    6. Re:Well, see, it's like this... by marco_craveiro · · Score: 1

      man, i found a few cool things in this discussion. flymake seems interesting but gcc_xml is extremely interesting!! while a great app for other languages, i am not a big fan of [ec]tags for c++ because of the richness of object-orientation as opposed to c. regular expressions just wont cut it for c++, you need to understand the semantics of the symbols in the program.

      my master's thesis defended that as an editor there is nothing wrong with gnu/emacs that a "next-generation ctags" couldn't fix - and a few months of using eclipse for java development is proving my point. yeah its very nifty but, bar from the fact that gnu/emacs hasn't got a nice widget set - when are we going to commit to GTK for X??? - the actual functional aspects could easily be done with a better ctags. (same applies to vi).

      the failure of technologies like oo-browser (*emacs) is that - besides having a incredibly difficult user interface (at least for non smalltalk-80 users :-)) - they they made a lisp parser when it should have been the compiler's job to do the parsing. this seems to me like an immense step forward and only a question of time until someone uses this to make an *emacs mode!!

      soup++

  17. The tools are useful, but... by treerex · · Score: 1

    ... if you read the description of the features that they've added, it isn't as impressive (to me, at least) as you would believe from the magic moniker "refactoring". They merely provide automation to refactoring tasks you could do by hand but which are more time consuming.

    The comparison with a compiler is specious. Perhaps a better comparison would be to a macro assembler. But even then, the fact is the editor is not doing anything more than the body sitting on the other side of the keyboard.

    What would be interesting, and what wasn't clear from the marketing noise on the site, is whether the editor is performing semantic analysis of the code to deal with aliasing and other issues that crop up when refactoring by hand.

    This is not to say these functions aren't useful: they are. But they don't just spin through your code and rewrite it for you. You need to know what you're doing.

    1. Re:The tools are useful, but... by Anonymous Coward · · Score: 0

      This is exactly what I would expect from the term refactoring as applied to a source code editor, or IDE. It is implementing a refactoring browser. What exactly did you expect it to do?

  18. Not really by manavendra · · Score: 2, Informative

    From Refactoring.com

    What is Refactoring?

    Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior. Its heart is a series of small behavior preserving transformations. Each transformation (called a 'refactoring') does little, but a sequence of transformations can produce a significant restructuring. Since each refactoring is small, it's less likely to go wrong. The system is also kept fully working after each small refactoring, reducing the chances that a system can get seriously broken during the restructuring.

    ...

    So not really...

    --
    http://efil.blogspot.com/
  19. together by maunleon · · Score: 1

    I thought together supports C++ refactoring, but I have only used it for C#. I can't afford the full blown version :(

    Quoting:

    "Refactoring
    Support for Refactoring at Class, Attribute and method level. Refactoring means rewriting existing source code with the intent of improving its design rather than changing its external behavior. The focus of refactoring is on the structure of the source code, changing the design to make the code easier to understand, maintain, and modify. The primary resource book on refactoring is Refactoring -- Improving the Design of Existing Code by Martin Fowler (Addison -Wesley, 1999). "

    http://www.borland.com/together/controlcenter/in de x.html

  20. NOOOOOOO!! by d2004xx · · Score: 0

    My emacs lost the race :(

    --

    --
    Your GOD in 2004
  21. where are the docs ? by soul_on_fire2001 · · Score: 1

    A major drawback for using this tool is the company deliberately makes it hard to find the documentation to use the tool for novices, you cannot find it on their website. Getting a simple c++ program to compile on this can be nightmare to a new user.
    Here is one place that sells the documentation

    http://www.programmersparadise.co m/Product.pasp?txtCatalog=Paradise&txtCategory=&tx tProductID=M39+017W
    Their website does not sell the their own documentation.

    1. Re:where are the docs ? by Anonymous Coward · · Score: 0

      Documentation for version 9 can be ordered here.

      Slickedit used to include the printed manual up to version 6 of their boxed product; from version 7 on it has been an optional, extra-cost item.

      Quality of documentation is variable: the manual tries to cover all the features, as well as the extension language & API, but much experimentation is necessary to really understand how the more obscure features work, often not mentined in the manual but only the (usually detailed) new features list in the Readme file.