Sounds like it doesn't catch everything and they recommend search-and-replace. From their docs: "For example, if you want to replace a variable name with a new name for a large project, use the Replace in path instead of the Rename refactoring since your variable can appear in the config files as well."
That should be most? Unless you do very weird stuff like using strings in JS to call functions, or reflection in C# and similar very special cases, any IDE can handle that.
Kotlin, Java, Python, C#, Typescript. Anything that has a trustworthy and consistent pointer between code.
Ruby would be the one exception I’ve worked on in my head, and for they language, ctrl+f *usually* (but not always) finds the rest.
Ruby is particularly magical with being able to evaluate methods from dynamic strings into running, production code[0]; but otherwise, languages and capable IDEs, like IntelliJ and Visual Studio just support that. I don’t happen to use VS Code, but I assume it has basic refactor, too.
Java has very good refactor support. I use jdt.ls which is eclipse based, but I've heard intellij is even better. I've wished for similar refactor actions in other langs.
I'm right there with you - prefer classic, deterministic tools wherever possible - but there's a limit. E.g. it's easy to rename a single getter from classic enterprise java `Foo getFoo() {..}` to a modern style `Foo foo() {..}` ... but to rename dozens of getters/setters across hundreds of classes is still tedious.
Even harder would be to update your setters from `void setFoo(Foo f) { this.foo = f; }` to fluent-style `Parent foo(Foo f) { this.foo = f; return this; }` - I'd be surprised if there's an LSP action for that at all. (I'd love to be proven wrong though)
Not sure about LSP, but IntelliJ has had a "structural search and replace" feature for many years, and it can easily handle changes like the one in your second paragraph. It's conceptually like a regex search, but it matches language-specific AST subtrees instead of character sequences.
I've found that for super large but simple refactors, codex and Claude struggle and will just quietly stop doing what you asked it if it's a long running task.
I actually had better luck asking codex to write temporary sed scripts based on the requirements then apply them.
Yes, LSPs can supply a variety of refactoring commands (rename, extract to, inline, etc.) that the LSP server can implement directly, deterministically, locally.
The funny thing is the Adventists seem to produce good hospitals but are still creationists. I guess it’s not a big deal how we got here if you just want to do medicine.
Oh, yes, I remember these kinds of answers distinctly frustrating. But it was not singular to SO. Reddit had a similar vibe at times. I remember I was studying some C things back when and asked about speed and what was essentially loop unrolling. Tip answer was why do you care about speed. Bruh, I am trying to get a mental model of how this thing works.
But as I read the OP it is that he objects to the barrier of entry. He would prefer (possibly very harsh) rate limiting over the hassle of registrering an account. Maybe combined with a weak "nag" screen.
It might be hard implementing in a bulletproof way as IP restrictions are easy to circumvent. But it might be "good enough" to drive more adoption.
I'm a bit on the fence. It would be an interesting experiment.
This feels disingenuous to the extreme. Yes, chances are that some people will die run over by a Waymo. Put enough miles in one and someone will die eventually. Compare the numbers to human drivers. Would you, if they had LESS fatality rates than human drivers, say that the difference is "lives saved"? - I don't think you would. In 5 years, after someone is eventually fatally injured you'll just jump up and say "AHA! Told you Waymos are unsafe!"
Especially your example with "run over elementary school children" is duplicitous. They showed how much less dangerous the impact from the Waymo was.
> In 5 years, after someone is eventually fatally injured you'll just jump up and say "AHA! Told you Waymos are unsafe!"
That'll depend on the circumstances. If someone is killed because of a mistake a human wouldn't have made (like driving into oncoming traffic or down a light rail track) it'll be entirely their fault. Even if they do something humans sometimes do but never should like running a red light I'd argue that it makes them unsafe. To our knowledge they've only been involved in one human fatality so far but it wasn't their fault so I don't blame them for that.
These people, even the drunk guy, weren't cruising down the tracks without a care in the world. They either stopped on tracks or were pushed onto them.
I was skeptical about the guy who claimed to be "blinded by the sun" and searched for more info only to find that people get hit by the light rail in Sandy Utah with alarming frequency. Not even just in cars. Pedestrians, people on bikes, people in wheelchairs, I'm starting to think it's cursed.
The real question is: Do you need to understand it fully for it to improve your life?
For example, if you're in fundamental science (or generally a fan of reductionism), it for sure would be nice to understand the universe instead of just having access to an AI that can comprehend it. But to the majority of the population it only matters that someone (or something) understands it enough to make it useful to others.
Understanding everything fully is futile. But there are many many many things that by understanding you improve your life. So, I feel the question is... not useful, I would say. Yes, you need to search for things that if you knew them you would improve your life. No, you can not know them all beforehand. Yes, there are such things. There always are.
They only improve your life if you actually work on something that you yourself are trying to improve. Most people are fine with the status quo, so if something like LLMs can take over the understanding of complex tasks, they won't even notice, except for the fact that more of these tasks will get done.
There are clearly things to understand more than just the immediate stuff you do for work. I think most people are thirsty for understanding, it's just... many times it's in other domains than you expect.
Even the doFoo to performBar is tedious because you need to catch all instances and your find/replace script strategy might have unintended victims.
In this case indeed, it's just much more convenient.
reply