Dari apa yang saya baca pengembangan tangkas sering melibatkan refactoring atau membalikkan kode teknik menjadi diagram. Tentu saja ada lebih dari itu, tetapi jika kita menganggap praktik yang mengandalkan kedua metode ini, apakah bahasa yang diketik secara dinamis tidak menguntungkan?
Tampaknya bahasa yang diketik secara statis akan membuat refactoring dan membalikkan teknik menjadi lebih mudah.
Apakah Refactoring atau (otomatis) rekayasa terbalik sulit jika bukan tidak mungkin dalam bahasa yang diketik secara dinamis? Apa yang dikatakan proyek dunia nyata tentang penggunaan bahasa yang diketik secara dinamis untuk metodologi tangkas?
agile
dynamic-typing
static-typing
Gerenuk
sumber
sumber
dynamic-typing
danstatic-typing
Jawaban:
Bahasa dinamis secara teori tidak menguntungkan, semuanya sama, karena mereka kurang menentukan tentang bagaimana kode bekerja (apa kendalanya), dan karena itu lebih sedikit refactoring dapat dilakukan secara otomatis, dan masalah yang muncul tidak dapat dideteksi secara otomatis juga .
Tapi semuanya tidak sama. Bahasa dinamis yang paling populer memungkinkan kode yang sangat kompak namun mudah dipahami, yang umumnya membuat pengembangan di dalamnya lebih cepat, dan membuat logika (yang dapat berubah dalam refactoring) lebih mudah dikenali secara visual. Jadi, meskipun Anda mungkin kehilangan beberapa keuntungan relatif dari bekerja dalam bahasa yang dinamis, Anda mungkin masih unggul, terutama jika Anda berencana melakukan refactoring dengan tangan.
Di sisi lain, ada bahasa yang diketik secara statis dengan keunggulan yang pada dasarnya sama dengan bahasa dinamis (yaitu kompak dan dapat dipahami - dengan jenis yang sebagian besar disimpulkan, tetapi sangat banyak di sana): Haskell mungkin merupakan contoh utama, tetapi OCaML / F #, Scala, dan yang lainnya ada di kategori ini juga. Sayangnya, karena mereka kurang banyak digunakan daripada bahasa yang diketik secara statis paling populer, mereka tidak memiliki set alat yang luas untuk mereka (misalnya untuk refactoring).
Jadi, sebagai garis bawah, saya pikir Anda akan melakukan cukup dengan metodologi tangkas di sebagian besar bahasa; Saya tidak akan mengatakan ada pemenang yang jelas sekarang karena latihan belum mengejar teori.
sumber
Refactoring otomatis ditemukan di Smalltalk, bahasa yang diketik secara dinamis. Jadi tidak, bukan tidak mungkin untuk memiliki refactoring otomatis dalam bahasa yang diketik secara dinamis. Betapa sulitnya itu jauh lebih tergantung pada faktor-faktor lain selain disiplin mengetik. C ++ dan Java keduanya diketik secara statis, tetapi alat refactoring hanya benar-benar ada untuk Java. Smalltalk dengan introspeksi dan sintaksis sederhana adalah kandidat yang sangat baik untuk alat refactoring.
Dalam beberapa hal, pengetikan dinamis sebenarnya membuat refactoring lebih mudah. Jika Anda memiliki suite pengujian yang baik, Anda dapat memastikan refactoring Anda tidak merusak apa pun. Basis kode yang diketik secara dinamis biasanya lebih kecil. Selain itu, refactoring cenderung memengaruhi kode yang lebih sedikit. Secara keseluruhan upaya yang terlibat dalam refactoring basis kode dinamis secara manual kurang dari basis kode statis.
sumber
Refactoring ditemukan dalam bahasa dinamis. Alat Refactoring Otomatis diciptakan dalam bahasa yang dinamis. IDE ditemukan dalam bahasa dinamis. Beberapa Metodologi Agile diciptakan dalam bahasa yang dinamis.
Saya benar-benar tidak melihat masalah.
sumber
Jangan sampai kita lupa, cara kerja "Agile" yang kemudian dikenal sebagai Extreme Programming (XP) diciptakan pada proyek Smalltalk (dan Smalltalk tentu saja dianggap sebagai bahasa "dinamis").
Berikut ini adalah studi kasus penggunaan industri alat refactoring yang disediakan dengan bahasa yang diketik secara dinamis:
dari "Transformasi lapisan data aplikasi" Will Loew-Blosser OOPSLA 2002
Juga - "Alat untuk membuat perubahan yang tidak mungkin - pengalaman dengan alat untuk mengubah program Smalltalk besar"
sumber
Menurut saya, prinsip Anda kedengarannya benar .
Bahasa yang sangat diketik seperti C # adalah kandidat yang baik untuk basis kode yang terus-menerus perlu anjak ulang. Pada dasarnya sebagian besar alat re-factoring (seperti Resharper, JustCode, dll.) Di pasar sangat efektif dalam bahasa pemrograman yang diketik secara statis.
Untuk tim pengembangan yang mempraktikkan metodologi Agile / Scrum, sangat membantu (bahkan kritis) untuk memiliki seperangkat alat re-factoring yang baik di bawah armor. Jika tidak, semua perubahan mendadak dalam sprint mendatang mungkin merupakan mimpi buruk untuk dimodifikasi atau dirancang ulang.
Dengan demikian, metodologi lincah tidak memberikan keuntungan untuk bahasa yang diketik secara statis atau dinamis sekali. Apa yang disediakannya adalah pendekatan berulang untuk membangun aplikasi yang solid.
sumber