Co uzasadnia użycie IDE w porównaniu ze standardowym edytorem? [Zamknięte]

39

Często używam mojego edytora tekstu (vim, nano, gedit, zbieraj truciznę) znacznie częściej niż jakiegokolwiek IDE.

Po zauważeniu, że moje skróty ide stają się zakurzone, zacząłem o tym myśleć i zastanawiać się: co usprawiedliwia użycie IDE w przeciwieństwie do edytora tekstu ?

W takim razie, jakie miałbyś uzasadnienie, że nie korzystasz z IDE i polegasz jedynie na edytorze?

Chris
źródło
możliwy duplikat programistów.stackexchange.com/ questions/ 1003/... ?
Larry Coleman
co tak naprawdę robisz w swoich redaktorach?
Pisz kod, twórz aplikacje, ... prawie wszystko ostatnio.
Chris,
15
Osobiście uważam, że IDE jest o wiele bardziej przydatne podczas czytania kodu innych osób (szczególnie dużych projektów) niż podczas pisania własnego kodu. IDE pozwala łatwiej nawigować po źródle, ułatwiając szybkie zrozumienie kodu źródłowego innych osób.
Charles Salvia,
3
Chciałbym odwrócić to pytanie. Co uzasadnia NIE używanie IDE.
Nailer

Odpowiedzi:

69

I: integracja . Dobry edytor tekstu może być fajny do pisania kodu, ale większość twojego programowania nie jest poświęcana na pisanie; poświęca się na testowanie i debugowanie, a do tego chcesz, aby Twój edytor tekstowy zintegrował się z twoim kompilatorem i debuggerem. To największa siła IDE.

Mason Wheeler
źródło
Gdybym tylko mógł znaleźć taki, który nie stanął mi na drodze :)
Tim Post
5
Właśnie zacząłem akceptować edycję podrzędną jako cenę, którą płacę za wygodę integracji.
TMN
Czy testowanie programowania nie jest poprawne? Jeśli spędzasz większość czasu na debugowaniu i testowaniu małp, myślę, że rozumiem, gdzie jest twój problem.
Tom Hawtin - tackline
8
@Tom, Testowanie to programowanie, w którym możesz zautomatyzować testy, które wykonujesz przez cały czas. W przeciwnym razie sprawdź za pomocą dowolnej metody, która daje najwyższą jakość.
Andres Jaan Tack
49

Są to moje ulubione funkcje mojego ulubionego IDE, IntelliJ, które lubię używać w Javie, PHP, JavaScript, HTML, a nawet ActionScript.

  • Sprawdzanie błędów - jak sprawdzanie pisowni na żywo w poszukiwaniu kodu. Absolutnie niezbędna.
  • Nawigacja po kodzie - Ctrl+clickw funkcji, zmiennej, typie, aby przejść do definicji. (IntelliJ jest w tym bardzo dobry we wszystkich powyższych językach)
  • Uzupełnianie kodu - używam Ctrl+spacestale, aby pomóc w uzupełnieniu nazwy klasy lub metody, której potrzebuję. Przyspiesza to kodowanie tony , a nawet pomaga wykrywać błędy, zanim się zdadzą, gdy coś, czego potrzebujesz, nie jest dostępne z kontekstu, w którym się znajdujesz. IntelliJ pomoże nawet rozwinąć akronimy - wpisz NPE, hit Ctrl+spacei wyświetli „NullPointerException”, „NoPageError” itp. Naciśnięcie przycisku, Alt+enteraby automatycznie dodać, importjest również bardzo miłe.
  • Generowanie kodu - Generuj programy pobierające i ustawiające, wdrażaj metody z interfejsu za pomocą kilku kliknięć.
  • Bardzo dobra kolorystyka kodu - IntelliJ wykonuje nie tylko standardowe słowo kluczowe, łańcuch, kolorowanie nazw zmiennych, ale także kolory zmiennych składowych, zmiennych lokalnych, parametrów. W ActionScript zmienna, która jest tak naprawdę ustawiaczem / geterem, będzie pokolorowana jak funkcja.
  • Refaktoryzacja - bezbłędna zmiana nazwy jest największa. IntelliJ jest bardzo dobry w zmianie nazw nawet seterów i getterów lub użycia ciągów. Oczywiście istnieje wyszukiwanie oparte na wyrażeniach regularnych i zamień je, gdy jest to potrzebne, oraz opcja „zachowaj wielkość liter”, która umożliwia zastąpienie „myNumber”, „MyNumber” i „MYNUMBER” słowami „myString”, „MyString” i „MYSTRING” w jednej operacji
  • Integracja kontroli wersji - używamy SVN, a moimi ulubionymi funkcjami IDE VC jest możliwość tworzenia, usuwania, przenoszenia klas bez myślenia o SVN, łatwa historia przeglądania, bardzo dobre narzędzie do porównywania, dobre możliwości łączenia i dodawania adnotacji do plików (wyświetlanie wiersza by-line history) w edytorze.
  • Importowanie zależności - w oparciu o bibliotekę innej firmy, dla której masz źródło, możesz łatwo przejść do kodu w celu uzyskania informacji, debugowania itp.
  • Inteligentne pisanie - wklejanie kodu i automatyczne wklejanie go do właściwej pozycji tabulacji, automatyczne uzupełnianie nawiasów końcowych, nawiasów, cytatów itp.
  • Bardzo dobry zawodnik testowy dla JUnit, FlexUnit, PHPUnit
  • Debugowanie - oczywiście. Debuguje JBoss, Jetty, a nawet Flash bezbłędnie. Ctrl + kliknij stos śladów, aby przejść bezpośrednio do kodu.

Rzeczy takie jak kolorowanie kodu, które można uznać za coś oczywistego, ale dobre kolorowanie kodu jest jak widzenie peryferyjne - pozwala skupić się na ważnych rzeczach bez dodatkowego ułamka sekundy, aby zidentyfikować pełne słowo.

IntelliJ używa nawet Ctrl+spacesugerowania nazw zmiennych. W Javie, jeśli zadeklarujesz nową zmienną EventMessageItem i naciśniesz Ctrl+space, zasugeruje ona „eventMessageItem”, „eventMessage”, „item” itp.

Wszystkie te rzeczy dają mi znacznie więcej czasu na zastanowienie się nad moim kodem i architekturą, a mniej na poprawianiu formatowania, postępowaniu z systemem plików, naprawianiu błędów kopiowania i wklejania, przełączaniu się między aplikacjami, ściganiu dokumentacji itp. Nie wiem, jak można odmówić takiemu wzrostowi wydajności.

Nicole
źródło
4
+ 1 za wzmiankę Idea IntelliJ - Po prostu to uwielbiam
artjom
3
+1, większość punktów tutaj odnosi się do każdego przyzwoitego IDE, a powinna :)
Matthieu
21

IDE rozumieją twój kod znacznie lepiej niż edytor. Umożliwia to na przykład uzupełnianie identyfikatora i refaktoryzację, co w przypadku pełnych języków, takich jak Java, jest wysyłane przez Boga,

użytkownik1249
źródło
1
Pamiętaj, że całe to zrozumienie wymaga pamięci do przechowywania. W związku z tym IDE jest dość zasobożerne w porównaniu do edytora „fit-on-a-floppy”.
19
Tak, ale moja maszyna deweloperska i7 8Gb musi coś zrobić podczas pisania. : D
Dominique McDonnell
IDE nie muszą być głodne zasobów. Ale Smalltalk to prawdopodobnie przypadek na krawędzi: łatwa, bardzo prosta składnia odbicia i tak dalej.
Frank Shearar
@Frank, zależy od tego, co chcesz, aby zrobili i jak to jest łatwe.
18
[To the IDE] You had me at intellisense/autocomplete
JohnFx
źródło
1
+1 Chociaż zawsze niepokojące jest uświadomienie sobie, że nigdy nie wpisuję pełnej nazwy klasy, metody lub właściwości, i wiem dokładnie, ile naciśnięć klawiszy potrzeba, aby wyodrębnić poprawną opcję autouzupełniania ... tic-tic-tic-TAB- dot-tic-tic-tic-TAB-dot-tic-tic-tic
Grossvogel 24.11.10
5
@gross, ale to prawda ! Ręczne pisanie często wiąże się z błędami.
@ TThorbjørnRavnAndersen Chyba że masz dwie podobnie nazwane rzeczy i przypadkowo nie wpisujesz wystarczającej liczby znaków, aby uzyskać właściwą. Przypadkowo wstawiłem właściwość „NumberOfPoints” w kilku obszarach, które wymagały „NumberOfSegments”, ponieważ nie zwracałem wystarczającej uwagi na moje autouzupełnianie: p. Biorąc to pod uwagę, wolałbym mieć autouzupełnianie niż nie.
KChaloux
14

Wydajność. Czy jest jakieś inne uzasadnienie, które ma sens? Dla mnie dobrze zaprojektowane IDE, które centralizuje wiele funkcji, które wykonuję podczas programowania - tworzenie i edytowanie kodu, korzystanie z kontroli źródła, debugowanie, interakcje z narzędziami do zarządzania projektami, komunikowanie się z innymi programistami, tworzenie dokumentacji, przeprowadzanie automatycznych testów - radykalnie zmniejsza tarcie procesowe, które zmniejsza moją wydajność.

Ponadto, chociaż wydaje mi się, że muszę wiedzieć, jak korzystać z każdego narzędzia osobno, nie chcę tego robić. Dla mnie przynajmniej kliknięcie prawym przyciskiem myszy jest nieskończenie lepsze niż otwieranie CLI i pisanie.

Użyłem wielu, ale IDE, do których wracam w kółko to Visual Studio, Wing IDE i NetBeans. Wszystko to stanowi znaczącą wartość czasu, który spędzam na programowaniu.

Adam Crossland
źródło
9

Historycznie IDE zapewniały niezrównaną wygodę na komputerze jednozadaniowym. Mój pierwszy kompilator C wymagał następujących kroków w cyklu edycji-kompilacji-uruchomienia:

  • Uruchom edytor
  • Edytuj program
  • Zapisz program, zamknij edytor
  • Kompiluj program
  • Złóż skompilowany program
  • Łącze skompilowany i złożony program
  • Uruchom program

w moim systemie CP / M. (Mógłbym zautomatyzować wiele z tego jako program wsadowy, gdyby moje dyski były większe.)

Kiedy dostałem Turbo Pascal, byłem zachwycony, że mogłem zachować dostępność edytora podczas kompilacji i debugowania.

Uważam, że to właśnie sprawiło, że IDE stały się popularne.

David Thornley
źródło
Ale wszystkie te rzeczy można zrobić od wielu redaktorów; Na przykład Emacs.
JasonFruit
@JasonFruit: Oczywiście. Wyjaśniam, co mnie do nich pociągało. W tamtych czasach korzystałem z CP / M na TRS-80 Mod 4 i uważam, że Emacs nadal był oparty na TECO.
David Thornley,
Okej, punkt. :-) (Emotikon, aby wypełnić wymaganą liczbę znaków.)
JasonFruit
2
@JasonFruit, CP / M-80 miały maksymalnie 64 Kb RAM. Zastanów się, ile Emacsa możesz w to zmieścić.
7

Jeśli piszesz w Lisp, Emacs ma funkcje podobne do Intellisense, takie jak wyszukiwanie parametrów metody i autouzupełnianie, więc możesz powiedzieć, że jest to oryginalne IDE. Fajnie jest też móc używać jednego programu do wielu zadań (ogólnie edycja, powłoka / wiersz poleceń, czytanie wiadomości).

Ogólnie rzecz biorąc, pytanie redaktora vs. IDE wydaje się zależeć od języka programowania. Z tego, co widziałem, kodery Ruby i Haskell na przykład wydają się preferować swój ulubiony edytor tekstu.

Larry Coleman
źródło
Emacs naprawdę może to zrobić w prawie każdym języku. Tryb PHP jest całkiem dobry, są tryby dla Javascript, Haskell, Erlang i SQL. (Inni też mogą być dobrzy, ale ich nie użyłem).
Zachary K
Po dodaniu wszystkich dzwonków i gwizdków do emacsa (lub dowolnego edytora w tym zakresie) masz już IDE. Zintegrowane środowisko programistyczne. Porównuję to do kupowania ciasta z piekarni (IDE) w porównaniu z robieniem go od zera (Oszukany redaktor)
sal
+1, Coq, Haskell i Lisp Emacs to jedyna rzecz z jakimkolwiek przyzwoitym wsparciem
jozefg
4
  • Kompilacja jednym kliknięciem
  • Debugowanie
  • Szablony kodów
  • Uzupełnianie kodu
  • Integracja z narzędziami kontroli wersji i refaktoryzacji
  • Prostsze testowanie jednostkowe

by wymienić tylko kilka

ysolik
źródło
3

Myślę, że odpowiedź będzie zależeć w dużej mierze od używanego języka programowania i od tego, jak dobrze nim posługujesz. W przypadku języków takich jak JAVA IDE jest konieczne, jeśli robisz coś poważnego. Wszędzie tam, gdzie chodzi o języki skryptowe, takie jak JS lub Ruby IDES, nie są zbyt przydatne.

Używam notatnika ++ i zestawu skryptów powłoki (do tworzenia kopii zapasowych, git commits) do mojego programowania i działa idealnie dobrze.

Mnich Wschodni
źródło
Używam GVIM dla Javascript i stwierdzam, że jest on DUŻO szybszy niż przy użyciu IDE. Zużywa również dużo mniej pamięci. Dodaj około 3-4 skryptów powłoki dla takich rzeczy jak jsLint, formatowanie i kontrolowanie selenu, i stwierdzam, że prawie nigdy nie muszę odrywać ręki od klawiatury. (I szczerze mówiąc, prawdopodobnie mógłbym zamienić wszystkie te skrypty w wtyczki VIM, jeślibym się tym przejmował)
Zachary K
3

Kilka argumentów na korzyść „redaktorów”:

  1. Są przypadki, w których IDE nie zostało jeszcze opracowane lub nigdy nie będzie.
  2. Za pomocą edytora możesz wprowadzać zmiany „szybciej” i bardziej chirurgicznie.
  3. Potrzebuje znacznie mniej zasobów (więc łatwiej jest korzystać z wielu otwartych jednocześnie)
  4. Ponieważ jest to jedyny sposób rozwiązania niektórych problemów, takich jak te tutaj opisane .
  5. (osobisty) Czasami, gdy muszę wszystko pisać, pracuję więcej przy użyciu mojej świadomości i jestem bardziej zaangażowany w to, co piszę. Wiele razy znalazłem na przykład błąd ortograficzny w metodzie (formaqString), który zostałby niezauważony przy użyciu IDE.
  6. Ułatwia pracę tylko przy użyciu klawiatury (szybkość / przepływ)
  7. Mentalność korzystania z makr lub innych programów oszczędzających czas.

Używam IDE na co dzień do pracy, inaczej napisanie Java / C # jest trudne.

(2) w porównaniu z (3): Zasadniczo tylko opcja zdalnej edycji plików (na ssh / pulpicie zdalnym) i wprowadzania minimalnych zmian w konfiguracji lub plikach na odległym serwerze.

Dimitrios Mistriotis
źródło
2

W zależności od twojego języka, niektóre IDE obejmują również wizualne projektantów Form / Window.

Chociaż należy zauważyć, linia między edytorem tekstów programisty a IDE nie jest dobrze zdefiniowana. Wiele edytorów można rozszerzyć o obsługę kompilacji, uzupełniania kodu, debugowania itp.

Grandmaster B.
źródło
2

Używam IDE do testowania / debugowania / integracji i KEDIT do edycji, ponieważ IDE ma poważny niedobór możliwości edycji.
Ponieważ .NET IDE rozpoznaje zmiany zewnętrzne, wszystko, co muszę zrobić, to zapisać w edytorze i zaakceptować monit o ponowne załadowanie źródła. To pozwala mi optymalizować jednocześnie moje możliwości edycji i debugowania.
W przypadku innych IDE używam KEDIT jako procesora szablonów i programu do wyszukiwania źródła i kopiuję / wklejam to źródło do IDE.

Dave
źródło
Co robisz w Kedit, czego IDE nie może zrobić? Jestem naprawdę ciekawy, nigdy tak naprawdę nie użyłem niczego poza IDE dla większości mojego poważnego kodowania ...
Dean Harding
KEDIT, podobnie jak inne inteligentne edytory, ma możliwości skryptowe, które pozwalają mi robić rzeczy, których nie potrafi IDE. Na przykład używam KEDIT do wykonywania wielu operacji buforowania (do 100 na sesję kedit) kopiowania, wklejania i edycji kolumn, do których IDE nie może się nawet zbliżyć.
Dave
1

W przypadku IDE: -
zaawansowane funkcje są podłączone od razu po wyjęciu z pudełka.
- niektóre funkcje są tak specyficzne dla twojego frameworku, że redaktorzy nie mają odpowiednika.

Dla edytora: -
Utrzymywanie rąk na klawiaturze.
- twoje środowisko programistyczne jest takie samo we wszystkich systemach -
lepsze skrypty dla twojego edytora -
niektóre funkcje IDE są dostępne z zewnętrznymi narzędziami lub skryptami. (intellisense, definicja goto, znajdź referencje)

mike30
źródło
0

Krótka krzywa uczenia się. To jest to.

Nate C
źródło
4
Myślę, że nie rozwinąłeś żadnego IDE
Harald Scheirich
4
Z vimem jako moim drugim pilotem nie muszę.
nate c
Krótka krzywa uczenia się dla ....? przepraszam, ale nie było to dla mnie oczywiste.
Chris
0

Jedyne, co naprawdę polecam, to debugger. IDE to tak naprawdę edytor z dodanym ładunkiem innych gubbin, ale jeśli możesz skompilować, wpisując make (lub strzałkę w górę + enter) w wierszu polecenia, nie potrzebujesz IDE. Jeśli możesz zatwierdzić SCM, klikając prawym przyciskiem myszy w Eksploratorze i wybierając odpowiedni element menu, nie potrzebujesz IDE.

Teraz wiem, że niektórzy ludzie potrzebują takich rzeczy jak obsługa refaktoryzacji (za pierwszym razem napisz kod poprawnie) lub jakiś zintegrowany projektant GUI (ale nawet wtedy, używając Visual Studio, używam Expression do pracy GUI, a nie kiepskiej obsługi XAML w VS ), a wiele osób potrzebuje inteligencji i autouzupełniania (szczególnie w przypadku pełnych języków, takich jak Java i C #, które mają bogato długie nazwy).

Ale dla mnie debugger GUI jest jedynym naprawdę dobrym powodem do użycia IDE. Nadal używam debuggera z wiersza poleceń (no cóż, windbg), ale na co dzień jest to wbudowany w VS.

gbjbaanb
źródło
0

IDE ma zalety. Nie wszystkie języki mają kompleksowe IDE, które naprawdę daje przewagę skalom, lub utworzenie takiego dla tego języka może być zbyt trudne. Powody, dla których miałby chcieć IDE? Zacznijmy od tych:

  • Język ma bogaty standardowy interfejs API, który w oknach IDE może przyspieszyć rozwój.
  • Jest dużo kodu na płycie kotła. (Wymuszona próba / złapanie, getters / setters itp.)
  • Autouzupełnianie może dokładnie spełnić Twoje potrzeby w zakresie kodowania
  • Twój pakiet testów jednostek językowych jest zintegrowany z tym IDE.
  • IDE jest świadomy i obsługuje wiele wspólnych bibliotek językowych dotyczących najlepszych praktyk.
  • Wtyczki dostępne do pracy mo'betta
  • Nie jest tak ciężki, że spowalnia twój system
  • Wysoce zintegrowany debugger? To pomaga.

Problem nie polega na tym, że wszystkie języki naprawdę zyskują na dużej wydajności dzięki kompleksowemu środowisku IDE. Używam IDE do niektórych prac (Java, C #), ale nie do innych (Python, Ruby, Coldfusion). To naprawdę jest równowaga. Niektóre języki po prostu nie wymagają tak kompleksowego pakietu.

Czy dla każdego istnieją IDE? Pewnie. Czy zawsze go potrzebujesz? Nie całkiem.

Takielunek
źródło