9 ms·
Your criticisms are correct, but when people say "Intellisense" they refer to more than just command completion. When you hit that "." or "->" or "<ctrl>+<space
by breckinloggins 13y ago
Your criticisms are correct, but when people say "Intellisense" they refer to more than just command completion. When you hit that "." or "->" or "<ctrl>+<space>" or whatever, you can see (and navigate with the keyboard):
- The full type signature of the function and its arguments (including generic/template parameters and constraints)
- Whether any of the arguments have default values and, if so, what they are
- Whether the last argument is a "params" or "..."
- The XMLDoc describing the function and every argument
- A scrollable list of every overload for that function name
Invoking Intellisense when not completing a function tells you:
- What code objects are available in your current scope
- What type of things those objects are (property, field, method, overloadable method in a subclass, ...)
- A list of snippets you could invoke from that point
All of this can be configured to show up automatically or only when invoked with specific key combinations. Also, the Visual Studio team has somehow made it so that all this stuff stays out of your way even when it comes up automagically. I've never seen any other IDE come close to being "always there yet unobtrusive". This includes Eclipse and they do it pretty well.
The biggest issue I have with your argument is that, while it's true that watching someone fumble around with their mouse while coding IS pretty painful, Intellisense is NOT the cause.
You didn't make this argument but I want to address it: I watch people who use vanilla Vim when they code (I can knock them because I tend to be one of them). What do they have on their other screen? A browser with some combination of google search tabs and Stackoverflow.com. What's on their terminal? One tab usually has a man (3) page up for shmemget() or something. A lot of what we're doing is looking up documentation for an API. I don't understand how this is somehow more "pure" than having that same documentation browsable in your editor and at your fingertips!
You're right; IDEs encourage lazy programming habits. But look again at that guy fumbling around with his mouse. Is he REALLY going to turn into a ninja command line wizard because you took his IDE away? Nope. He's going to continue to be mediocre no matter what tools you give him, because the underlying reason is deeper than the tools.
- skrebbel 13y agoI mostly agree with your argument, except: > You're right; IDEs encourage lazy programming habits. Nonsense. You know what's lazy? Working on a project with millions of lines of code and deciding that digging through it to find the routine you need is more work than just coding it again. My conspiracy theory is that editors that allow you to enter code real fast encourage a personal not-invented-here syndrome. Coding it yourself is faster than looking up how to use someone else's code (be it code by a team member or an open-source library). If the only way to use a lib is to read bad reference docs on the internet, or, god forbid, the source, and you're on vim/emacs/sublime, then sure, hack it together yourself. It's faster, more fun, and all the trouble caused by code duplication and added complexity is for your successors anyway. Not your problem! This why all PHP, Ruby and Python programmers build their own HTTP request router at some point in their career (I sure did). On the other side, editors that make it very easy for you to discover and navigate code will encourage you to use existing code. Typing `someObject.` and getting a precise, documented and navigable list of exactly what you can do with that object. That causes you to use that object the way it was intended. Maybe refactor one of its methods so that it's more flexible or general. You wouldn't refactor a method that you don't know existed, right? Direct, at-your-fingertips insight in the code you use, and the code you wrote last month, encourages appropriate use of said code. (Sidenote: of course there's absolutely no reason why an IDE can't have great text-editing keybindings. I suspect that the only reason most fakevim plugins for IDEs are mediocre is because the user group is so small. After all, the average vim/emacs user looks down on IDEs)
- bad_user 13y ago> My conspiracy theory is that editors that allow you to enter code real fast encourage a personal not-invented-here syndrome. If your "million lines of code" project isn't well documented or designed, then relying on an IDE to find pieces of code doesn't really help. It is also my "conspiracy theory" that because IDEs are so good at hiding the junk under the carpet, developers become sloppy and stop carrying about things like modularization and API design, immersing themselves into sloppy code and factories of factories. E.g. no project should ever get to millions of lines of code, because no developer is able to keep it in one's head, which is why monolithic code bases are a mess. If you're not splitting your project in multiple modules/libraries, you're doing it wrong. And such users can't see it, because they are developing in languages in which IDE usage was encouraged from the start (e.g. C#, Java), so libraries are naturally developed with IDEs in mind, being really hard and frustrating to use them without an IDE, creating a vicious circle. It is also my opinion that IDE "users" (because seriously folks, many of you are not the kind of people that can adapt their environment to their needs, therefore you are just users) have never tried to develop in Vim or Emacs in combination with a potent REPL, plus the Unix toolchain. Unfortunately for you particularly, you'd also have to change languages and immerse yourself in the Unix culture for that to be a pleasant experience. But seriously, try it sometimes, you might just like it. Note that I'm currently using IntelliJ IDEA, from the same guys that are delivering ReSharper, the plugin that makes Visual Studio usable. IntelliJ IDEA is a really potent IDE. But many times I hate it and I can't wait to get back full-time on Emacs, unfortunately I have to use IntelliJ because I'm dealing with Java's ecosystem right now. Well, at least Java has Maven and SBT.
- lemming 13y agoBut seriously, this is almost entirely bullshit. I've used IDEs for a long time, and they just don't encourage the problems you're describing here. Bad developers do, and that's totally independent of your language or your editor. Maybe you don't have to work on million line projects but lots of people do, and maybe, just maybe, it's not their fault and maybe, just maybe, there are totally valid reasons that their projects are like that. It is my opinion that mere editor "users" (because seriously folks, many of you are the kind of people who can't get off your high horse) never understand that, and refuse to accept that perhaps other people might like different tools or work in different scenarios than they do. And yes, I used Emacs for 8 years. You couldn't pay me enough to go back.