3 ms·
Could you expand on that? I understand that with Vim I will be able to quickly find and replace words, but I will never be able to truly refactor, because it r
by skdotdan 10y ago
Could you expand on that?
I understand that with Vim I will be able to quickly find and replace words, but I will never be able to truly refactor, because it requires powerful code analysis that only an IDE can do and a Vim plugin can't.
- dozzie 10y agoRefactorization is a change that modifies how the internals of the code work. It often requires introducing a new pattern, change of the interface of classes or modules, or change in the program logic. Sometimes refactorization means a complete rewrite of a program segment, with preserving external interface. What IDEs offer is just moving some bits around, the ones that can be tied mechanically together. It's nowhere near real refactorization. Handy, but not that much, if you think about your code in advance.
- Piskvorrr 10y agoIndeed - but especially Jetbrains' IDEs provide fairly powerful tools to help you with this, way beyond search and replace. In the end, you'll need to involve your brain anyway, but the IDE makes the menial work easier.
- skdotdan 10y agoThank you for your explanation. So, even a full IDE can't achieve true refactoring.
- nugator 10y agoYes it can. https://www.jetbrains.com/help/idea/2016.3/refactoring-source-code.html https://www.jetbrains.com/help/idea/2016.3/refactoring-sourc...
- dozzie 10y agoIt can't. Just because somebody called moving things around in a mechanical manner "refactoring", it doesn't mean it's all (or even most) there is to refactoring.
- nugator 10y agoThe Jetbrains IntelliJ Idea (Java) IDE has support for a lot of REAL refactoring, not sure what you mean. I'm very impressed by how much the IDE can help me with. https://www.jetbrains.com/help/idea/2016.3/refactoring-source-code.html https://www.jetbrains.com/help/idea/2016.3/refactoring-sourc...
- dozzie 10y agoNo. Real refactoring involves changing logic of the program and making it more modular, neither of which can be done by the machine in a general case. What is behind the link you provided is just mechanically moving things around.
- nugator 10y agoOk, perhaps we have different views of what refactoring is. From Wikipedia [1]: "Code refactoring is the process of restructuring existing computer code—changing the factoring—without changing its external behaviour. Refactoring improves nonfunctional attributes of the software. Advantages include improved code readability and reduced complexity; these can improve source-code maintainability and create a more expressive internal architecture or object model to improve extensibility. Typically, refactoring applies a series of standardised basic micro-refactorings, each of which is (usually) a tiny change in a computer program's source code that either preserves the behaviour of the software, or at least does not modify its conformance to functional requirements." "Many software editors and IDEs have automated refactoring support." Listed is Jetbrains IntelliJ IDEA. The IDE can do the micro-refactorings but I agree that (at least today) there needs to be a programmer to decide which micro-refactorings should be done to improve the code. [1] https://en.wikipedia.org/wiki/Code_refactoring https://en.wikipedia.org/wiki/Code_refactoring
- schemathings 10y agoLook up 'ctags' and vim and the language of your choice.
- skdotdan 10y agoThanks