Trik apa yang paling mengesankan yang bisa dilakukan oleh IDE dengan kodenya? [Tutup]

18

IDE modern memiliki banyak trik untuk membantu penulisan kode, refactoring, pencarian. Semua itu sangat membantu, tetapi jarang ada yang terlihat seperti "sihir" sungguhan dan membuat saya berpikir, "Wow! Bagaimana cara mengetahuinya?"

Dapatkah Anda menyebutkan fitur otomatisasi kode IDE (atau lainnya) yang mengesankan yang mengejutkan Anda saat pertama kali melihatnya?

serg
sumber
3
Pertanyaan bagus, akan sangat senang melihat lebih banyak jawaban ... Bounty!
Tamara Wijsman
Saya tidak tahu apakah ini harus menjadi jawaban, tetapi mengapa saya tidak melihat sebutan IntelliJ IDEA ?
Markus
5
Pemrogram sungguhan menggunakan kupu-kupu.
rightfold
Cegah saya dari membuat bug;)
Travis Christian
ini seharusnya tidak ditutup, ini pertanyaan sempurna untuk ini, imho
NimChimpsky

Jawaban:

29

Mundur Debugging

Visual Studio 2010 (dan sekarang 2012) memungkinkan saya melakukan debug mundur dengan IntelliTrace.

Tidak akan pernah lagi saya harus menghidupkan kembali momen di mana saya menekan F10 satu kali terlalu banyak dan harus memulai kembali debugging.

Ryan Hayes
sumber
2
Saya belum pernah menggunakan ini, tapi saya ingin.
AShelly
Saya juga belum menggunakan ini (saya menggunakan RAD Studio untuk Delphi), tetapi kedengarannya seperti mimpi yang menjadi kenyataan. (Tapi apakah ini jawaban yang valid untuk pertanyaan ini ? Ini lebih merupakan fitur debugger daripada fitur editor kode. Ya, itu adalah bagian dari IDE, jadi mungkin ...)
Andreas Rejbrand
+1000: Ini sangat berguna.
Callum Rogers
Apakah ada perintah COME FROM? :)
Joonas Pulakka
2
masalahnya adalah bahwa Anda hanya dapat melakukan ini dengan bahasa MS (terkelola) dan tidak dengan C ++, misalnya
Buka jalan
16

Pelengkapan kode

Ketika semua yang Anda lihat adalah editor teks, ini mengesankan

TheLQ
sumber
3
Sebenarnya tidak terlalu mengesankan, Anda dapat melakukannya hanya dengan menganalisis file TAGS.
alternatif
2
Apa yang saya suka adalah hippie-memperluas ... itu mendalam lebih berguna bagi saya daripada penyelesaian kode.
Paul Nathan
2
@ mathepic Dan berapa banyak orang yang tahu melakukan itu?
TheLQ
2
Sangat mengesankan jika Anda telah memprogram sejak hari-hari mainframe.
AShelly
4
Guys, jika Anda tidak menemukan jawaban ini menarik, silakan pilih jawaban yang lain, daripada tidak setuju dalam komentar. Ini pertanyaan subyektif, jadi jawaban yang diberikan kemungkinan juga begitu.
JBRWilkinson
16

Kemampuan ReSharper untuk menebak apa yang saya inginkan dari variabel bernama terus membuat saya takjub. Ini adalah contoh yang sangat sederhana tetapi Anda mendapatkan idenya.

teks alternatif

Menembus
sumber
1
Bisakah Anda memberikan beberapa contoh bagi mereka yang tidak pernah melihatnya dalam aksi (saya)
serg
9
Jika editor teks Anda dapat menggantikan Anda dalam menulis kode, saya punya berita buruk ...
P Shved
3
foreach(var matche in regex.Matches(str)). Juga ditetapkan matchesebagai objectbukan Match, tidak terlalu berguna.
Callum Rogers
1
@Callum: Benar, tapi itu hanya karena MatchCollectionkoleksi yang belum diketik. Untuk koleksi yang tepat, varsangat bagus. (Saya masih tidak menyukainya)
konfigurator
1
ini juga fitur gerhana.
NimChimpsky
12

Saya sangat terkesan dengan alat refactoring Eclipse ketika saya pertama kali menemukannya. Kemampuan untuk mengekstrak metode (yang, ketika Anda belajar desain yang lebih baik adalah kejadian umum) dari sejumlah besar kode dan semuanya ditangani untuk saya cukup keren.

bedwyr
sumber
12

Bubbles kode. http://www.andrewbragdon.com/codebubbles_site.asp

Saya suka Visual Studio dan Eclipse untuk alat yang mereka berikan kepada saya untuk mengubah kode, tetapi Code Bubbles benar-benar membuat saya senang karena dapat menavigasi dan melihat kode saya. Sayang sekali tidak tersedia untuk umum = - {

MBonig
sumber
2
Wow. Video itu ... Saya ngiler Bisakah saya mendapatkan ini untuk C ++?
sbi
Saya tidak bisa mengatakan apa-apa selain wow.
Icode4food
1
+1 Meskipun saya tidak suka GUI saat ini, konsepnya sendiri sangat menakjubkan ...
Tamara Wijsman
apakah itu benar-benar berfungsi? kotak kecil dengan bagian dari kode. Untuk menggunakannya Anda perlu monitor yang memiliki ukuran dinding.
IAdapter
Saya harap ini tidak pernah diterapkan di Emacs. Kelingking kiriku tidak akan menyukainya.
sayap kanan
7

Lingkungan pemrograman yang paling mengesankan yang pernah saya dengar adalah sistem operasi Genera.

Anda bisa mengklik widget apa saja di sistem windowing dan mendapatkan pembacaan penuh dari kode sumber & dokumentasi item. Menjadi bahasa pemrograman dinamis (Lisp), Anda dapat mengedit sumber widget dengan cepat.

ZMACS dari dunia Lisp Machine masih dikatakan sebagai editor yang lebih baik daripada Emacs, yang merupakan lingkungan editor tanpa rekan.

Paul Nathan
sumber
Pekerjaan komputasi pertama saya setelah universitas bekerja dengan stasiun kerja simbolis (menggunakan genera), percayalah ada alasan mengapa ia tidak tertarik!
FinnNk
3
Oh, jelaskan!
Mark C
ya, saya ingin tahu mengapa Genera tidak menangkapnya juga
Yazz.com
@FinnNk: Mungkin Anda bisa menguraikan?
Paul Nathan
6

Secara visual menunjukkan struktur program (program / fungsi / rutinitas / ...)

teks alternatif

Benteng
sumber
Editor mana itu?
Paul Nathan
Nasib buruk ... (Anda mendapat surat pada saat Anda mengambil tangkapan layar.) Tapi ini bukan fitur yang sangat canggih. Tentu, ini mungkin sangat berguna, tetapi tidak terlalu "mengesankan" (sama sekali).
Andreas Rejbrand
@ Andrew Rejbrand - Maaf Andreas, tapi surat apa? Tangkapan layar apa? Saya khawatir saya tidak mengerti apa yang Anda bicarakan.
Benteng
@Rook: Dia berbicara tentang gambar di jawaban Anda dan kotak biru kecil di kanan bawah yang tampaknya pemberitahuan email dari Outlook. . .
Tim Goodman
4

Kemampuan ReSharper untuk melakukan refactor. Dalam pengungkapan penuh, saya mungkin berada di belakang kurva di sini karena saya pikir Java dengan Eclipse telah memiliki jenis fungsi ini untuk beberapa waktu, tetapi saya tidak secara teratur bekerja dengan Java.

Delta dalam kemampuan yang ditambahkan ReSharper ke Visual Studio sangat hebat, sulit dipercaya. Saya tahu saya terdengar seperti iklan, tetapi saya tidak berpikir saya bisa kembali menggunakan instalasi Visual Studio tanpa ReSharper di atasnya.

Secara umum, pemahaman semantik tentang kode akan mengalahkan para editor teks biasa kapan saja. Ini mengarah pada hal-hal seperti "temukan penggunaan variabel" atau "fungsi sebaris" atau "peluang untuk menggunakan pola idiomatik", dll.

Mark Canlas
sumber
Saya pernah diberi tahu di tempat kerja, "Teman-teman jangan biarkan teman-teman program tanpa ReSharper."
Frank Shearar
4

Debugger Smalltalk:

  • Akses penuh ke seluruh tumpukan panggilan (Apa variabel instance dari objek 3 pengirim di tumpukan?)
  • Edit kode yang sedang diuji di debugger, restart dan jalankan eksekusi program seperti tidak ada yang terjadi.

Sangat normal di Smalltalk untuk menghabiskan sebagian besar waktu menulis kode dari dalam debugger.

(Saya ingat terpesona dengan menjalankan metode, melihat sesuatu yang salah, mengubahnya, dan menjalankan metode itu lagi tanpa memulai kembali aplikasi pada hari itu dengan Visual Age for Java ... karena VA4J ditulis dalam Visual Age for Smalltalk.)

Pencari Metode Smalltalk

Metode Finder memungkinkan Anda bertanya "pesan mana yang mungkin saya kirim untuk mengambil parameter ini dan mendapatkan hasil ini?" Tanyakan itu 'abc'. 'def'. 'abcdeb'.dan itu memberitahu Anda 'abc' , 'def' --> 'abcdef'. Tanyakan #(0 1 2 3)dan katakan#(0 1 2 3) sum --> 6 . * Pengirim, pelaksana-dari Anda semua untuk menemukan semua (*) pengirim pesan atau semua objek yang mengimplementasikan pesan itu.

(*) Kecuali ketika Anda melakukan hal-hal seperti membuat nama pesan pada saat runtime: self perform: (#foo, #bar)untuk mengirimi diri Anda pesan #foobar- dalam hal ini Anda tahu apa yang Anda lakukan, dan Anda tidak keberatan dengan potensi mengangkat diri Anda sendiri pada petard Anda sendiri.

Frank Shearar
sumber
4

Whyline

Whyline untuk Java benar-benar membuat saya terkesan ketika saya melihatnya. Ini adalah alat analisis dinamis yang memungkinkan Anda mengajukan pertanyaan tentang output program, dan bukan hanya teks, tetapi juga grafis. Misalnya, Anda dapat bertanya "mengapa garis itu merah?" atau "mengapa metode cat tidak dipanggil?"

Ini bekerja dengan menginstruksikan program Anda dan merekam lari. Misalnya, anggap ada bug yang dapat Anda buat kembali. Anda instrumen program Anda dengan Whyline, jalankan program Anda di Whyline untuk mereproduksi bug, dan kemudian ketika Anda keluar dari program, Anda dapat menggunakan Whyline untuk memeriksa riwayat eksekusi.

Perekaman dan pemutaran ini bukan hal baru, tetapi bagaimana Whyline mengimplementasikannya cukup apik. Anda dapat melihat riwayat sesuai dengan peristiwa tertentu (mis. Berfokus hanya pada aktivitas seret mouse, atau hanya peristiwa keydown). Ini juga mengaitkan output dengan bagian mana dari program yang mencetaknya, sehingga Anda dapat menavigasi dari output ke kode.

Untuk bekerja, ini menggunakan program slicing, sehingga Anda dapat fokus pada bagian-bagian kode yang benar-benar relevan. CMU sekarang memiliki hak paten di atasnya, dan saya tidak tahu apa rencana mereka, tapi saya harap kita bisa melihatnya lebih banyak dalam produksi. Ini adalah babi memori, tapi itu mungkin karena ini adalah prototipe dan dapat ditingkatkan.

Anda harus melihat demo online, tetapi Anda juga harus mencobanya sendiri untuk mendapatkan pengalaman penuh. Jika ada, demo online akan menjual ide.

Macneil
sumber
3

Saya pikir fitur IDE paling mengesankan yang pernah saya lihat adalah SyncEdit , yang AFAIK hanya tersedia di Delphi.

Mason Wheeler
sumber
Bukankah ini hanya mengganti nama anggota? Eclipse melakukan ini di tempat. Sunting: Oh saya mengerti, Anda dapat melakukannya dalam suatu pilihan.
Matt Olenik
1
Eclipse juga memilikinya (menggunakannya setiap saat). Berguna - sangat. Ajaib - tidak begitu yakin.
serg
@Serg: Oh, Eclipse juga? Saya tidak akan tahu; Saya tidak menggunakan Java. Saya tahu VS tidak memilikinya ...
Mason Wheeler
@ Mat: Anda dapat melakukannya dalam suatu pilihan, dan karena Anda dapat melakukannya dalam suatu pilihan, Anda dapat melakukannya di seluruh file sebanyak yang Anda inginkan. Ini tidak dibatasi oleh ruang lingkup atau kendala lain yang akan dilakukan parser refactoring pada penggantian nama anggota.
Mason Wheeler
Netbeans juga memiliki ini. Biasanya ctrl-r.
Alan Pearce
2

Apa yang ingin saya lihat di IDE adalah fitur-fitur ini:

  • Tampilkan kode seperti yang biasa saya lakukan (terlepas dari bagaimana sebenarnya diformat)
  • Izinkan untuk menyematkan tabel (katakanlah lembar spread Excel di mana saya dapat membaca nilai sel dengan sheet[A3]) dan menggambar dalam kode dan mengaksesnya seperti variabel apa pun.
  • Izinkan untuk menghilangkan kawat gigi dan kode lain yang tidak perlu yang hanya ada untuk membuat parse bahagia.
  • Mencari kode dengan mesin seperti Google (terutama mendapatkan hasil pencarian dalam 35ms)
  • Menampilkan ifkondisi kompleks dengan cara seperti tabel (masih mencari tautan).
  • Alat refactoring yang dapat menemukan kode yang sama, ekstrak perbedaan dan menguranginya secara maksimal.
  • Mendukung pembuatan kode sambil mematuhi aturan bahasa (pikirkan: Buat semua getter dan setter untuk kelas Java kecuali metode dengan nama yang sama sudah ada atau tergantung pada anotasi)
Aaron Digulla
sumber
"Buat semua getter dan setter untuk kelas Java kecuali ada metode dengan nama yang sama sudah ada" Saya pikir gerhana melakukan itu ...
Hila
Apakah "Tampilkan kode seperti yang saya gunakan" dan "Izinkan untuk menghilangkan tanda kurung" tujuan yang kompatibel?
TRiG
@Hila: Ya tapi kodenya terlihat . Apa yang saya suka adalah bahwa kompiler hanya menghasilkan mereka ketika mengkompilasi sumber Java; Saya tidak ingin mereka mengacaukan sumbernya.
Aaron Digulla
@TRiG: IMHO, ada tumpang tindih besar antara keduanya. Saya indentasi semua kode saya; kawat gigi benar-benar tidak berguna.
Aaron Digulla
Jika, mungkin, IDE menyimpan kawat gigi tetapi tidak menampilkannya, itu bisa berhasil.
TRiG
2

Ketik Memeriksa Bahasa Dinamis

Selama kode Anda tidak terlalu 'meta', sebuah IDE untuk Ruby atau Python harus dapat menjalankan tugas latar belakang yang:

  • untuk fungsi yang diberikan, tentukan semua kelas yang mungkin yang akan diteruskan sebagai argumen
  • untuk kelas-kelas tersebut, pastikan mereka merespons semua metode yang dipanggil oleh fungsi itu
  • menyajikan daftar kelas yang tidak kompatibel dengan metode yang hilang yang perlu Anda terapkan

Saya belum melihat IDE yang melakukan ini.

ASHelly
sumber
Maksud Anda, Anda belum melihat R / P IDE yang melakukan ini atau IDE pada umumnya?
Mark C
Saya belum pernah melihat ini di mana pun, tetapi saya juga belum terlihat sangat keras.
AShelly
Roel Wuyts 'RoelTyper dan Lex Spoon's Chuck melakukan / melakukan analisis semacam ini untuk Squeak.
Frank Shearar
Ini mungkin harus dibangun di atas semacam sistem inferensi jenis, pada bahasa yang tidak pernah dirancang untuk inferensi jenis.
Lie Ryan
2

Saya penggemar berat kemampuan klik alt multi baris di Vs2010 hal terbaik yang saya temukan tentang versi baru.

memutarkan lagi
sumber
2

Eclipse's Auto Build adalah fitur yang paling saya kagumi .... 7 tahun yang lalu. Sekarang saya hanya menerima begitu saja.

nanda
sumber
intellij baru saja mendapatkan ini karena di v12. Cukup banyak satu-satunya hal gerhana yang lebih baik
NimChimpsky
2

Xcode 4 memperbaiki titik koma dan kesalahan ketik dan menggunakan panah untuk menunjukkan bagaimana kesalahan terjadi.

Misalnya:

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

Panah akan ditarik dari [a release]ke [a length]untuk menunjukkan mengapa Anda tidak dapat menggunakan [a length].

sayap kanan
sumber
Perilaku ini ke analisa statis dentang. Anda dapat menjalankannya sebagai perintah terpisah dan melihat output di browser. Tidak ada panah mewah.
Will
1

Templat dan perluasan Kode, seperti CodeRush dari DevExpress. Dalam C #, a DependencyPropertyadalah rasa sakit yang besar untuk dibuat, karena sintaksisnya bisa menjadi verbose, tetapi hanya mengetikkan "dp" memunculkan sesuatu yang mirip dengan snippet di mana Anda mengisi jenis, nama dan nilai default, dan semuanya dilakukan - termasuk menambahkan pernyataan "menggunakan" yang diperlukan, dan mungkin memproyeksikan referensi jika memori berfungsi.

Manfaatnya adalah membuat templat sendiri, untuk kode yang sering Anda gunakan ulang atau tulis ulang, seperti implementasi INotifyPropertyChangedproperti yang sederhana , di mana cukup berikan templat nama dan jenis properti (jika ekspander lain belum menanganinya) yang ingin Anda gunakan , dan menangani sisanya, termasuk membuat variabel pendukung.

Hugo
sumber
1

Pex melakukan beberapa generasi tes unit otomatis yang cukup keren. Itu melacak kode Anda, menentukan titik cabang, menggunakan pemecah bersyarat untuk menghasilkan input yang mengenai setiap cabang yang mungkin, dan kemudian memungkinkan Anda mengekspor hasilnya sebagai tes unit berulang. Ini dapat mempermalukan kode penanganan string yang kompleks.

nlawalker
sumber
Bagus! Meskipun, saya berharap ini akan digunakan lebih banyak untuk pembuatan data uji daripada kasus uji penuh ! [Data pengujian + Output yang diharapkan = Test case.] Artinya, secara otomatis menghasilkan output yang diharapkan berarti tidak benar-benar menguji apa yang Anda pikirkan. Itu perlu diverifikasi oleh seseorang yang tahu spec.
Macneil
1

Dalam Eclipse Generate SEtters dan getter secara otomatis, buat metode yang serupa di kelas implement dari sebuah antarmuka

GoodSp33d
sumber
1

Dukungan IntelliJ Idea untuk JPA

Sebutkan Anda memiliki DatabaseEntity:

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

sekarang Anda memiliki beberapa JPA-Queries

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

setelah beberapa waktu Anda melihat, bahwa Anda membuat kesalahan ketik dalam Entitas Anda dan Anda memutuskan untuk refactor lasname ke lastName .

IDE itu juga akan memperbaiki JPA-Query.

ckuetbach
sumber