Динамические языки мокрые по своей сути

6yrop

Вот принцип DRY из вики:
The DRY principle is stated as "Every piece of knowledge must have a single, unambiguous, authoritative representation within a system."
Пусть имеется исходный код SourceCode0. Пришла задача реализовать фичу Feature1. Делаем метод DoFeature1 и вызываем его в нескольких местах Place1, Place2, … PlaceN. Получаем исходный код SourceCode1.
Теперь пришла задача убрать фичу Feature1. Логично, что код должен усохнуть до SourceCode0. Поскольку найти Place1, Place2, … PlaceN нельзя, то код SourceCode1 является мокрым.

Dasar

это больше ограничение инструментов, чем языков.
В C# в большом проекте (состоящем из десятка solution-ов, разрабатывающиеся различными командами) удаление фичи из библиотеки тоже не автоматически происходит. Я уж не говорю про C++, где автоматический рефакторинг еще много хуже представлен.

6yrop

это больше ограничение инструментов, чем языков.
для всех известных динамических языках такой инструмент построить нельзя. Поэтому это ограничение относится ко всем известным динамическим языкам.

psm-home

Поскольку найти Place1, Place2, … PlaceN нельзя
Смелое утверждение, grep запретили что-ли?

Dasar

совершенно безосновательное утверждение.
статический анализ для динамических языков вполне строится. Муторно и долго, но строится.

6yrop

Смелое утверждение, grep запретили что-ли?
В случае сухого решения на вход подается место расположения метода DoFeature1Place, на выходе получаем Place1, Place2, … PlaceN. Как ты подашь DoFeature1Place на вход grep-у, и что он с ним будет делать? Скорее всего, ты хочешь еще что-то подавать на вход, а это уже не сухо.

6yrop

совершенно безосновательное утверждение.
статический анализ для динамических языков вполне строится. Муторно и долго, но строится.
"Муторно и долго" это ни о чем. Нужны оценки сложности. Боюсь там экспоненциальная сложность.

psm-home

Я имел в виду решение без автоматизации, "сделать руками", а не так как я привык в IDEA или ты привык в ReSharper. Это только звучит ужасно, а коллеги-джаваскриптеры только так и работают, и прекрасно себя чувствуют.

6yrop

Это только звучит ужасно, а коллеги-джаваскриптеры только так и работают, и прекрасно себя чувствуют.
Ну мы же сейчас не о том, как себя чувствуют исполнители.

psm-home

Ты написал "нельзя найти". Я говорю что руками и grep-ом найти можно.

6yrop

Ты написал "нельзя найти". Я говорю что руками и grep-ом найти можно.
Контекст был — соблюдение сухого принципа. С соблюдением сухого принципа найти нельзя.

6yrop

Смелое утверждение, grep запретили что-ли?
Ребята из Facebook и Microfoft видимо не умеют пользоваться grep-ом
00:03:28 http://www.infoq.com/presentations/Facebook-Software-Stack
00:00:35 http://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-...

6yrop

ну и качестве офтопа картинка про фефоманс
http://www.infoq.com/presentations/Scale-at-Facebook

6yrop

Смелое утверждение, grep запретили что-ли?

Correct intellisense suggestions. I’d estimate that PyCharm provides a correct suggestion only in 30% of cases.
Correct refactorings. Nearly any refactoring in PyCharm requires manual fixes. I’d say PyCharm dependency detection gives some false positives in 30% cases, and false negatives in 10% of cases, so you always need to supervise this. And that’s really annoying in case of really large refactorings (100+ usages). Most of Python developers use grep for this, and that’s way more complex. I’d say, that’s probably the biggest disadvantage: you can easily spend 10+ minutes (in some cases - an hour or so) on actions that take 1 minute in ReSharper.
http://www.quora.com/Python-programming-language-1/How-does-...
Оставить комментарий
Имя или ник:
Комментарий: