Bir IDE'nin kodla çekebileceği en etkileyici hileler nelerdir? [kapalı]


18

Modern IDE'lerin, kod yazma, yeniden düzenleme, arama konusunda yardımcı olmak için kolları çok fazla hile var. Bütün bunlar çok faydalı, ama nadiren herhangi biri gerçek bir "sihir" gibi görünüyor ve "Vay canına! Bunu nasıl anladım?"

İlk gördüğünüzde aklınızı başınızdan alan etkileyici IDE kodu otomasyon (veya diğer) özelliklerini adlandırabilir misiniz?


3
İyi soru, daha fazla cevap görmek isterdim ... Ödül!
Tamara Wijsman

Bunun bir cevap olup olmayacağını bilmiyorum, ama neden IntelliJ IDEA'dan bahsetmiyorum ?
Mark C

5
Gerçek programcılar kelebekler kullanır.
sağda

Böcek oluşturmama engelle;)
Travis Christian

bu kapalı olmamalı, onun için mükemmel bir soru,
imho

Yanıtlar:


29

Geriye Doğru Hata Ayıklama

Visual Studio 2010 (ve şimdi 2012) IntelliTrace ile geriye doğru hata ayıklamama izin veriyor .

Bir daha asla F10'a çarptığım anı yeniden yaşamak ve hata ayıklamayı yeniden başlatmak zorunda kalmayacağım.


2
Bunu henüz kullanmadım, ama istiyorum.
AShelly

Ben de bunu kullanmadım (Delphi için RAD Studio kullanıyorum), ama bir rüya gerçek gibi geliyor. (Ama bu bu soruya geçerli bir cevap mı? Bir kod editörü özelliğinden daha çok bir hata ayıklayıcı özelliğidir. Eh, IDE'nin bir parçasıdır, belki ...)
Andreas Rejbrand

+1000: Bu çok kullanışlı.
Callum Rogers

COME FROM komutu var mı? :)
Joonas Pulakka

2
Sorun sadece örnek için, C ++ ile MS dillerle bu (yönetilen) ve yapabilmesidir
Açık yol

16

Kod tamamlama

Tüm gördüğünüz bir metin editörü olduğunda, bu etkileyici


3
Aslında o kadar etkileyici değil, bunu sadece bir TAGS dosyasını analiz ederek yapabilirsiniz.
alternatif

2
Sevdiğim şey hippi-genişletme ... benim için kod tamamlanmasından çok daha yararlı.
Paul Nathan

2
@mathepic Ve bunu tam olarak kaç kişi biliyor?
TheLQ

2
Ana bilgisayar günlerinden beri programlama yapıyorsanız etkileyici.
AShelly

4
Çocuklar, bu cevabı cazip bulamazsanız, lütfen yorumlara katılmamak yerine başka bir cevaba oy verin. Bu öznel bir soru, bu yüzden verilen cevapların da olması muhtemeldir.
JBRWilkinson

16

ReSharper'ın adında bir değişkenin ne istediğini tahmin etme yeteneği beni şaşırtmaya devam ediyor. İşte çok basit bir örnek ama siz anladınız.

alternatif metin


1
Lütfen eylemde hiç görmemiş olanlar için bazı örnekler verebilir misiniz (ben)
serg

9
Metin düzenleyiciniz kod yazarken sizi değiştirebilirse, bazı kötü haberlerim var ...
P Shved

3
foreach(var matche in regex.Matches(str)). Ayrıca çok yararlı değil, matchebir objectyerine olarak ayarlar Match.
Callum Rogers

1
@Callum: Doğru, ama bunun nedeni MatchCollectiontam olarak sınıflandırılmamış bir koleksiyon. Düzgün koleksiyonlar için varharika çalışıyor. (Yine de sevmiyorum)
yapılandırıcı

1
bu tutulmadaki bir özelliktir.
NimChimpsky

12

İlk karşılaştığımda Eclipse'nin yeniden düzenleme araçlarından çok etkilendim . Büyük bir kod grubundan (daha iyi tasarım öğrenirken yaygın bir durumdur) yöntemleri ayıklama ve benim için her şeyi halletme yeteneği oldukça iyiydi.


12

Kod kabarcıklar. http://www.andrewbragdon.com/codebubbles_site.asp

Visual Studio ve Eclipse kod değiştirmek için bana verdikleri araçlar için seviyorum, ama Code Bubbles gerçekten benim gezinmek ve kodumu görüntülemek için beni heyecanlandırıyor. Herkese açık olmayan çok kötü = - {


2
Vay. O video ... salya akıtıyorum. Bunu C ++ için alabilir miyim lütfen?
sbi

Vay canına başka bir şey söyleyemem.
Icode4food

1
+1 Şu anki GUI'yi sevmeme rağmen, konseptin kendisi oldukça şaşırtıcı ...
Tamara Wijsman

bu gerçekten işe yarıyor mu? kodun bir parçası olan küçük kutular. Bunu kullanmak için duvar boyutuna sahip bir monitöre ihtiyacınız olacaktır.
IAdapter

Umarım bu Emacs'ta asla uygulanmaz. Sol pembem bunu sevmeyecek.
rightfold

7

Şimdiye kadar duyduğum en etkileyici programlama ortamı Genera işletim sistemidir.

Pencereleme sistemindeki herhangi bir widget'ı tıklayabilir ve öğenin kaynak kodunun ve belgelerinin tam bir okumasını alabilirsiniz. Dinamik bir programlama dili (Lisp) olarak, widget'ın kaynağını anında düzenleyebilirsiniz.

Lisp Machine dünyasından ZMACS'ın hala emsalsiz bir editör ortamı olan Emacs'tan daha iyi bir editör olduğu söyleniyor.


Üniversiteden sonraki ilk bilgisayar işim sembolik bir iş istasyonuyla (genera kullanarak) çalışıyordu, inan bana bir şey yakalamıyor!
FinnNk

3
Oh, detaylandırın!
Mark C

evet,
Genera'nın

@FinnNk: Belki ayrıntılandırabilirsin?
Paul Nathan

6

Programın yapısını görsel olarak gösterme (programlar / fonksiyonlar / rutinler / ...)

alternatif metin


Hangi editör bu?
Paul Nathan


Kötü şans ... (Ekran görüntüsünü aldığınız anda posta aldınız.) Ama bu çok gelişmiş bir özellik değil. Tabii, muhtemelen son derece yararlı, ama çok "etkileyici" (hiç).
Andreas Rejbrand

@Andreas Rejbrand - Üzgünüm Andreas, ama hangi posta? Ne ekran görüntüsü? Korkarım neden bahsettiğinizi anlamıyorum.
Kale

@Rook: Cevabınızdaki görüntüden ve sağ alt köşedeki Outlook'tan bir e-posta bildirimi gibi görünen küçük mavi kutudan bahsediyor. . .
Tim Goodman

4

ReSharper'ın yeniden düzenleme yeteneği. Tam açıklamada, Eclipse ile Java'nın bir süredir bu tür bir işlevselliğe sahip olduğunu düşündüğüm için burada eğrinin arkasında olabilirim, ancak düzenli olarak Java ile çalışmıyorum.

ReSharper'ın Visual Studio'ya eklediği yetenek delta kadar harika, inanılmaz. Bir reklam gibi geldiğimi biliyorum, ancak üstte ReSharper olmadan hisse senedi Visual Studio yüklemesini kullanmaya geri dönebileceğimi sanmıyorum.

Daha genel olarak, kodun anlamsal bir şekilde anlaşılması, her gün düz eski bir metin düzenleyicinin pantolonunu yener. Bu, "değişkenin kullanımını bul" veya "satır içi işlev" veya "deyimsel kalıp kullanma fırsatı" gibi şeylere yol açar.


İş yerinde bir kez bana "Arkadaşlarım ReSharper olmadan programlanmasına izin vermiyor" dedim.
Frank Shearar

4

Smalltalk'in hata ayıklayıcısı:

  • Tüm çağrı yığınına tam erişim (Nesne 3 gönderenlerinin bu örnek değişkeni yığında neydi?)
  • Hata ayıklayıcıda test edilen kodu düzenleyin, yeniden başlatın ve hiçbir şey olmamış gibi program yürütmeye devam edin.

Smalltalk'ta zamanın çoğunu hata ayıklayıcıdan kod yazarak geçirmek normaldir.

(Bir yöntemi çalıştırarak, yanlış bir şey görerek, değiştirerek ve uygulamayı Java için Visual Age ile gün içinde yeniden başlatmadan tekrar çalıştırdığımı hatırlıyorum ... çünkü VA4J, Visual Age for Smalltalk için yazılmıştır.)

Smalltalk'ın Yöntem Bulucu

Yöntem Bulucu, "bu parametreleri alıp bu sonucu almak için hangi mesajı gönderebilirim?" Sor 'abc'. 'def'. 'abcdeb'.ve sana söyler 'abc' , 'def' --> 'abcdef'. Sor #(0 1 2 3)ve diyor ki#(0 1 2 3) sum --> 6 . * Gönderenler-of, uygulayıcılar-bir iletinin tüm (*) gönderenleri veya bu iletiyi uygulayan tüm nesneleri bulmak için tüm.

(*) Çalışma zamanında mesaj adları oluşturmak gibi şeyler yaptığınızda hariç: self perform: (#foo, #bar)kendinize mesaj göndermek için #foobar- bu durumda ne yaptığınızı biliyorsunuz ve kendinizi kendi kepçenizde kaldırma potansiyelini önemsemiyorsunuz.


4

Whyline

Java için Whyline onu gördüğümde beni gerçekten etkiledi. Sadece metin değil, grafikler de programın çıktısı hakkında sorular sormanızı sağlayan dinamik bir analiz aracıdır. Örneğin, "bu çizgi neden kırmızıydı?" veya "boya yöntemi neden çağrılmadı?"

Programınızı kullanarak ve bir çalışma kaydederek çalışır. Örneğin, yeniden oluşturabileceğiniz bir hata olduğunu varsayalım. Programınızı Whyline ile yönetiyorsunuz, hatayı yeniden oluşturmak için programınızı Whyline'da çalıştırıyorsunuz ve programdan çıktığınızda yürütme geçmişini incelemek için Whyline'ı kullanabilirsiniz.

Bu kayıt ve oynatma yeni değil, ancak Whyline'ın bunu nasıl uyguladığı oldukça kaygan. Geçmişi belirli olaylara göre görüntüleyebilirsiniz (örn. Yalnızca fare sürükleme olaylarına veya yalnızca tuş takımı olaylarına odaklanma). Çıktıyı, programın hangi bölümü ile yazdırdığıyla ilişkilendirir, böylece çıktıdan koda gidebilirsiniz.

Çalışmak için, kodun gerçekten ilgili kısımlarına odaklanabilmeniz için program dilimleme kullanır. CMU'nun üzerinde bir patenti var ve planlarının ne olduğunu bilmiyorum, ama umarım daha fazlasını üretimde görebiliriz. Bu bir bellek domuzu, ama muhtemelen bir prototip olduğu ve gelişebileceği için.

Demoyu çevrimiçi olarak görmelisiniz, ancak tam deneyimi elde etmek için kendiniz de denemelisiniz. Bir şey varsa, çevrimiçi demolar fikri anlar.


3

Gördüğüm en etkileyici IDE özelliği, AFAIK'ın yalnızca Delphi'de kullanılabildiği SyncEdit .


Bu sadece üyeleri yeniden adlandırmak değil mi? Eclipse bunu yerinde yapıyor. Düzenleme: Oh, anlıyorum, bir seçim içinde yapabilirsiniz.
Matt Olenik

1
Eclipse de var (her zaman kullanın). Yararlı - çok. Büyülü - o kadar emin değilim.
serg

@Serg: Oh, Eclipse de var mı? Bilmem; Java kullanmıyorum. VS'nin buna sahip olmadığını biliyorum ...
Mason Wheeler

@Matt: Bir seçim kendiniz yapabilirsiniz ve çünkü bir seçim kendiniz yapabilirsiniz istediğiniz gibi, dosyanın kadar bunu genelinde yapabilirsiniz. Yeniden düzenleme ayrıştırıcısının üye yeniden adlandırmasına koyacağı kapsam veya diğer kısıtlamalarla sınırlı değildir.
Mason Wheeler

Netbeans'de de var. Genellikle ctrl-r.
Alan Pearce

2

Bir IDE'de görmek istediğim şu özellikler:

  • Kodu alıştığım şekilde göster (aslında nasıl biçimlendirildiğinden bağımsız)
  • Kodda tabloları ( sheet[A3]çizimler ve hücre değerlerini okuyabileceğim bir Excel forma sayfası ) ve çizimleri katıştırıp bunlara erişmek için izin verin.
  • Ayrıştırmayı mutlu etmek için sadece orada bulunan parantezleri ve diğer gereksiz kodları atlayın.
  • Kodu Google benzeri bir motorla arama (özellikle 35ms içinde arama sonuçları alma)
  • Karmaşık ifkoşulların tablo benzeri bir şekilde görüntülenmesi (hala bağlantı aranıyor).
  • Benzer kodu bulan, farklılıkları ayıklayan ve bunları maksimuma indiren yeniden düzenleme araçları.
  • Dil kurallarına uyurken kod oluşturma desteği (düşünün: Aynı ada sahip bir yöntem zaten yoksa veya ek açıklamalara bağımlı değilse, Java sınıfları için tüm alıcıları ve ayarlayıcıları oluşturun)

"Aynı adı taşıyan bir yöntem zaten yoksa Java sınıfları için tüm alıcılar ve ayarlayıcılar oluşturun" Bence tutulma bunu yapar ...
Hila

"Kodu alışkın olduğum şekilde görüntüle" ve "Diş tellerini atlamaya izin ver" uyumlu hedefler mi?
TRiG

@ Merhaba: Evet ama kod görülebilir . Ne istiyorum derleyici sadece Java kaynağı derlerken onları üretir; Kaynağını dağıtmalarını istemiyorum.
Aaron Digulla

@TRiG: IMHO, ikisi arasında büyük bir çakışma var. Tüm kodumu girintiliyorum; diş telleri tamamen işe yaramaz.
Aaron Digulla

Belki, IDE diş telleri kaydeder, ancak bunları görüntülemezse, bu işe yarayabilir.
TRiG

2

Dinamik Diller için Tip Denetimi

Kodunuz çok fazla 'meta' almadığı sürece, Ruby veya Python için bir IDE, aşağıdakileri içeren bir arka plan görevi çalıştırabilmelidir:

  • belirli bir işlev için, bağımsız değişken olarak iletilecek tüm olası sınıfları belirler
  • bu sınıflar için, bu işlev tarafından çağrılan tüm yöntemlere yanıt vermelerini sağlar
  • uygulamanız gereken eksik yöntemlerle uyumsuz sınıfların bir listesini sunar

Henüz bunu yapan bir IDE görmedim.


Yani bunu veya genel olarak herhangi bir IDE'yi yapan bir R / P IDE görmediniz mi?
Mark C

Bunu hiç bir yerde görmedim, ama çok da sert görünmüyordum.
AShelly

Roel Wuyts'ın RoelTyper ve Lex Spoon'un Chuck'ı Squeak için bu tür analizler yaptılar.
Frank Shearar

Bunun muhtemelen bir tür tür çıkarım sistemi üzerine, asla tür çıkarım için tasarlanmamış bir dile inşa edilmesi gerekecektir.
Yalan Ryan


2

Eclipse'ın Auto Build'ı en çok hayran olduğum özellik ... 7 yıl önce. Şimdi sadece bunu kabul ediyorum.


intellij bunu sadece v12'de alıyor. Hemen hemen tek şey tutulması daha iyi
NimChimpsky

2

Xcode 4 noktalı virgülleri ve yazım hatalarını giderir ve bir hatanın nasıl oluştuğunu göstermek için okları kullanır.

Örneğin:

NSString *a = [[NSString alloc] init];
[a release];
int l = [a length];

Neden kullanamayacağınızı göstermek [a release]için bir ok çizilecektir .[a length][a length]


Bu davranış, clang statik analizörüne bağlıdır. Ayrı bir komut olarak çalıştırabilir ve çıktıyı bir tarayıcıda görüntüleyebilirsiniz. Hiçbir fantezi oklar olsa.
İrade

1

Kod Şablonları ve DevExpress 'CodeRush gibi genişletme. C # 'da, a DependencyPropertysözdizimi ayrıntılı olabileceğinden, oluşturmak için büyük bir acıdır, ancak yalnızca "dp" yazmak, türü, adı ve varsayılan değeri girdiğiniz bir snippet'e benzer bir şey getirir ve diğer her şey yapılır - dahil gerekli herhangi bir "using" ifadesi ve bellek sunulmuşsa muhtemelen proje referansları eklemek.

Bunun yararı, kendi şablonlarınızı oluştururken, sık kullandığınız veya yeniden yazdığınız kodlar için, INotifyPropertyChanged şablon , şablona, ​​kullanmak istediğiniz özelliğin adını ve türünü (başka bir genişletici tarafından işlenmediyse) verin. ve destek değişkeninin oluşturulması da dahil olmak üzere gerisini işler.


1

Pex oldukça hoş otomatik ünite testi üretimi yapıyor. Kodunuzu izler, dallanma noktalarını belirler, olası tüm dallara çarpan girdiler oluşturmak için koşullu bir çözücü kullanır ve sonuçları tekrarlanabilir birim testleri olarak dışa aktarmanıza olanak tanır. Karmaşık dizi işleme kodunu aşağılayabilir.


Güzel! Her ne kadar, umarım tam test senaryosundan ziyade test veri üretimi için daha fazla kullanılır ! [Test verileri + Beklenen çıktı = Test örneği.] Yani, beklenen çıktıyı otomatik olarak oluşturmak, aslında ne düşündüğünüzü test etmediği anlamına gelir. Spesifikasyonu bilen biri tarafından doğrulanması gerekir.
Macneil

1

Eclipse Generate SEtters ve alıcıları otomatik olarak bir arabirimden uygular sınıfında yöntemler oluşturur


1

IntelliJ Idea'nın JPA desteği

Bir DatabaseEntity'niz olduğundan bahsedin:

@Entity
public class Customer{
[...]
String lasName;
[...]

şimdi bazı JPA Sorgularınız var

Query q = "selecct s from Customer c where c.lasName=:lastName"

Bir süre sonra size Kuruluş içinde bir yazım hatası yapmış, görmek ve refactor karar lasname için lastName .

Bu IDE, JPA Sorgusunu da yeniden düzenleyecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.