Теоретично динамічні мови перебувають у невигідному стані, всі інші рівні, тому що вони вказують менше на те, як працює код (які обмеження), і тому менше рефакторингу можна зробити автоматично, а проблеми, що виникають, не можуть бути виявлені також автоматично .
Але все інше не рівне. Найпопулярніші динамічні мови дозволяють отримати дуже компактний, але зрозумілий код, який, як правило, робить в них швидший розвиток, а також робить логіку (яка може змінитися при рефакторингу) легше візуально помітити. Отже, хоча ви можете втратити частину відносної переваги роботи динамічною мовою, ви все одно можете випереджати, особливо якщо ви планували робити рефакторинг вручну.
З іншого боку, існують статично типізовані мови, які мають по суті ті ж переваги, що й динамічні мови (тобто компактні та зрозумілі - з типами в основному зроблені висновки, але їх дуже багато): Haskell - це, мабуть, провідний приклад, але OCaML / F #, Scala, та інші також в цій категорії. На жаль, оскільки вони менш широко використовуються, ніж найпопулярніші статично набрані мови, вони не мають настільки широкого набору інструментів для них (наприклад, для рефакторингу).
Отже, як підсумок, я думаю, що ви достойно поступите з гнучкими методологіями на більшості мов; Я б не сказав, що зараз є чіткий переможець, оскільки практика ще не догнала теорію.