Saya suka bahwa menulis Python, Ruby atau Javascript membutuhkan boilerplate yang sangat sedikit. Saya suka konstruksi fungsional sederhana. Saya suka sintaksis yang bersih dan sederhana.
Namun, ada tiga hal yang saya sangat buruk ketika mengembangkan perangkat lunak besar dalam bahasa yang dinamis:
- Menavigasi kode
- Mengidentifikasi antarmuka objek yang saya gunakan
- Refactoring secara efisien
Saya telah mencoba editor sederhana (yaitu Vim) serta IDE (Eclipse + PyDev) tetapi dalam kedua kasus saya merasa seperti saya harus melakukan lebih banyak ke memori dan / atau untuk terus "grep" dan membaca kode untuk mengidentifikasi antarmuka. Ini terutama benar ketika bekerja dengan basis kode besar dengan banyak dependensi.
Adapun refactoring, misalnya mengubah nama metode, itu menjadi sangat tergantung pada kualitas tes unit saya. Dan jika saya mencoba untuk mengisolasi tes unit saya dengan "memotongnya" sisa aplikasi, maka tidak ada jaminan bahwa antarmuka rintisan saya tetap up to date dengan objek yang saya matikan.
Saya yakin ada solusi untuk masalah ini. Bagaimana Anda bekerja secara efisien dalam Python, Ruby atau Javascript?
sumber
Jawaban:
Dapatkan editor yang lebih baik daripada VIM.
Saya menggunakan Komodo Edit.
Baik. Berpikir itu baik. Saya menemukan bahwa "belajar" pada akhirnya mengarah ke "memori".
Ini tipikal. Jika Anda tidak dapat mengingatnya, maka itu terlalu rumit, bukan? Saatnya menyederhanakan.
Sederhana sulit dibuat. Tetapi ketika Anda memiliki kesulitan mengingat, itu adalah gejala desain yang buruk.
Saya menggunakan grep. Ini bekerja untuk saya. Edit Komodo saya memiliki banyak pencarian yang bagus. Begitu juga Notepad ++
Doc Strings dan
help()
fungsinya berfungsi. Saya menggunakannya. Harian.Itu bukan berita. Itu selalu benar, bahkan dalam bahasa statis.
Dalam bahasa statis, kita sering menjadi malas, dengan asumsi bahwa - selama dikompilasi - itu benar-benar mungkin berhasil. Ini benar-benar salah, tetapi kita menjadi malas.
Ini bukan "masalah" dan tidak memerlukan "solusi".
"tidak tahu jenis benda"? Betulkah. Ketika saya mendesain klien suatu objek, saya tahu tipe apa yang saya desain.
Ketika saya mendefinisikan layanan, digunakan oleh banyak klien, tipe "tepat" tidak relevan, ketika saya telah mendefinisikan antarmuka yang diperlukan dari
quack()
danfeathers()
.Akhirnya, saya memiliki Read-Execute-Print-Loop dan alat-alat lain untuk menentukan tipe "tepat" dalam kasus yang jarang terjadi ketika saya memiliki masalah halus. Itulah yang sebenarnya saya gunakan setiap hari.
Sepertinya tidak terlalu sulit - setidaknya dengan Python - untuk melepas tipe objek. Harus bahasa yang dinamis memiliki REPL, sehingga cukup mudah untuk melihat apa yang terjadi.
Itu tidak masuk akal.
help()
bekerja.Dan IDE saya sering dapat menemukan definisi. Tidak selalu - beberapa konstruksi dinamis yang berbelit-belit dapat dengan mudah menyembunyikan kelas dasar. Dalam hal itu, saya harus benar-benar berpikir tentang kelas objek untuk menemukan definisi metode. Tentu saja, saya sedang menulis kode, jadi ada sedikit (atau tidak ada) misteri di sana.
sumber
Pencarian cepat muncul Rfactor untuk Ruby ( wawancara di sini ) dan tukang reparasi sepeda untuk Python. Tidak yakin seberapa bagusnya ... tapi mereka layak untuk dilihat.
sumber
Ada sebuah perusahaan - JetBrains - penulis ReSharper, TeamCity dan IDEA. Mereka baru-baru ini mulai melihat bahasa dinamis dan sudah merilis alat mereka untuk Python, PHP dan Ruby.
Kualitasnya bagus. Ini bukan plugin lain untuk IDE favorit Anda tetapi IDE berfitur lengkap dan mereka cukup baik untuk refactoring / navigasi / debugging dll - mereka seperti IDEA lite.
sumber