|
|
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
Смотрю Groovy. Волосы встают дыбом. Как же разработку такого кода держать в таких рамках, чтобы приложение работало. Например Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. То есть мы просто что-то, что по нашему замыслу должно быть коллекцией, назвали def collection. А если другой программист туда передаст int? Или он должен догадаться по названию? Я мог бы назвать параметр например def vasya. И как тогда должен пользователь метода догадываться,что именно передавать как параметр. Кстати, если я делаю def list = new ModifyList(3), то ничего не падает. Спокойно отрабатывается код и печатает [] Если такое будет внутри сложной системы, то как же отловить такую ошибку? Получается, что например я написал код и назвал параметр collection, а другой член команды должен был по названию догадаться, что это коллекция и передавать туда именно ее, а не int. Но если он не догадается об этом или случайно передаст туда int, то билд все равно соберется и будет тихо работать неправильно. Никаких сообщений об ошибке не будет даже в runtime. Будет падать где-то дальше, где ожидается например непустой List, а приходит пустой. Но понять почему падает будет сложно. Далее Код: java 1. . Тут я передаю closure в метод, а в методе уже происходит Код: java 1. То есть closure должен знать как обработать каждый элемент из этого this[i]. Если я выполняю умножение в этом closure, то я предполагаю, что там цифры. То есть я должен передать известные мне аргументы, и передать что с ними делать Например тут я передаю closure, который выполняет над String то что есть для String - конкатенацию. Код: java 1. 2. А тут я вызываю в closure то, что можно сделать с int - ну и передаю соответственно int. Код: java 1. 2. Тут вроде я контролирую ситуацию. Но при этом я должен знать, что будет делать метод modify(closure) в классе ModifyList с этим closure? То есть я должен знать внутреннее устройство метода прежде чем передать туда closure? И общая функциональность получается в результате сложения функциональности метода и функциональности передаваемого closure, Как тут контролировать это смешение моего кода в closure, который я передаю в метод, и собственно кода в самом методе? Хорошо если код в методе просто пробегает коллекцию и делает манипуляции, задаваемые closure, над каждым элементом. Но наверное ж это просто частный случай? В чем тут философия? Как это понимать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2012, 18:52:43 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
oson, Динмическая типизация она такая... Как вариант можно использовать в груви strict типизацию, в последней версии это есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2012, 19:34:43 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
А что значит в последней версии она есть? Ее ж вроде всегда можно было использовать? Или есть какой то механизм, чтобы team lead например разрешил только строгую типизацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2012, 21:10:47 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
osonчтобы team lead например разрешил только строгую типизацию? на кой он тогда вообще нужен. groovy это ж типа та же Java, но с динамической типизацией. убираем динамическую типизацию. остаётся Java. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2012, 21:40:34 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
Ну а как управлять проектом, где каждый может написать def vasya? Получается что все должны быть в команде гипер-профессионалы и очень наблюдательные. Компилятор и IDE тут не поможет же. Вот и соберется себе билд спокойно, но работать не будет и ошибки будет кидать далеко в другом месте от того, где кто-то кто не выспался в тот день в этот метод вместо коллекции передавал просто int. Как же с этим бороться? Или это язык для тех кто пишет в одиночку и знает, для чего он ввел этот параметр def value и что он там дальше с ним делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2012, 22:02:27 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
oson, Придётся все-таки думать во время кодинга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 01:16:18 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
Добрый день, oson! > Ну а как управлять проектом, где каждый может написать def vasya? Делать очень много юнит-тестов. Так, чтобы они заменяли статическую типизацию. -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 09:01:41 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
я за строгую типизацию. При любой ошибке и полном ребилде, компилятор поймает любую (почти ))) ) ошибку. Эта ситуация напоминает JS в "обозревателях интернета". Поэтому пром.системы на нём не пишут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 09:39:29 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
Petro123я за строгую типизацию. При любой ошибке и полном ребилде, компилятор поймает любую (почти ))) ) ошибку. Эта ситуация напоминает JS в "обозревателях интернета". Поэтому пром.системы на нём не пишут. В одном из топиков человек написал что именно банковские системы и строятся на Grails. Вот и пойми. Тут видимо только супер профессионалы должны работать. По поводу http://groovy.codehaus.org/gapi/groovy/transform/CompileStatic.html Это видимо в последней версии? Должен и последний Grails быть уже на этой версии Groovy? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 14:42:31 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
osonВ одном из топиков человек написал что именно банковские системы и строятся на Grails. Вот и пойми. Тут видимо только супер профессионалы должны работать. скажу IMHO. Топиков с конкретикой как у тебя о семантике ЯП тут не много. В большинстве много общих рассуждений. Интересна как раз конкретика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 14:53:36 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
Я что-то не догоняю разговора, теперь что на строгую типизацию молиться надо? Что техники такие как TDD не работают? Или ООП совсем не такой как хочется и вообще в только в блокноте нормальные системы пилятся. Проясните какие проблемы с тем что у Groovy динамическая типизация? Пример что какой-то программист Вася присвоет не то значение не состоятелен, так как и в Java можно закастить хоть что, хоть во что. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 15:13:16 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
GregTkЯ что-то не догоняю разговора, теперь что на строгую типизацию молиться надо? Что техники такие как TDD не работают? Или ООП совсем не такой как хочется и вообще в только в блокноте нормальные системы пилятся. Проясните какие проблемы с тем что у Groovy динамическая типизация? Пример что какой-то программист Вася присвоет не то значение не состоятелен, так как и в Java можно закастить хоть что, хоть во что. :) Все зависит от проекта. В больших командах, и там где стабильность важнее(большинство опечаток и логических ошибок ловится во время компиляции) - предпочтительнее использовать статическую типизацию, и это никак не зависит от TDD. Для утилитных проектов или в проекте, который пишут 2-3 человека, динамическая типизация может сильно сократить время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 15:18:10 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
osonPetro123я за строгую типизацию. При любой ошибке и полном ребилде, компилятор поймает любую (почти ))) ) ошибку. Эта ситуация напоминает JS в "обозревателях интернета". Поэтому пром.системы на нём не пишут. В одном из топиков человек написал что именно банковские системы и строятся на Grails. Вот и пойми. Тут видимо только супер профессионалы должны работать. По поводу http://groovy.codehaus.org/gapi/groovy/transform/CompileStatic.html Это видимо в последней версии? Должен и последний Grails быть уже на этой версии Groovy? этот человек, видимо, является поклонником этого граилс и выдаёт желаемое за действительное. Пистит, если своими именами назвать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 15:37:36 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
забыл ник, Ok, Что за логические ошибки и как они возникают, и как динамическая типизация их пораждает? Ошибки пораждаются членами команды и если член команды знает о том что типизация динамическая он и будет контролировать типы. Про опечатки это вообще мне не понятно, сейчас почти все среды разработки имеет нормальный auto-complete с скучей плюшек. Мне кажется что ничего страшного в динамической типизации нет, а проблемы с ней выдуманы ну или как минимум преувеличены. Готов обсудить пример из жизни, где действительно динамическая типизация добавила только хлопот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 15:50:57 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
GregTk, - да элементарный рефакторинг. Решил заменить float на int. Грохнул в самом важном модуле. Нажал на компиляцию, и пошёл править там где он остановится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 16:14:38 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
Petro123, согласен пример реальный, но зная эту особенность можно код покрыть тестом. Так что не очень критично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 17:29:12 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
GregTk, я не представляю. - компилятор контролирует каждую букву сам. Чтобы тестами покрывать буквы - это новый компилятор. - автодополнение тоже работает от инфы статической типизации. Банально меньше методов вылазит при подсказках. ну и т.д.... А того кто не написал тесты покроем ещё сверху тестами))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 17:48:36 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
GregTkPetro123, согласен пример реальный, но зная эту особенность можно код покрыть тестом. Так что не очень критично. Статическая типизация тем и хороша, что позволяет не писать тонны тривиальных тестов, как вам еще обьяснить:) Плюс в процесс разработки включается такое понятие как дисциплина, кто-то забыл про тест и давай, до свидания. Вы когда-нибудь работали над проектом, где более 10 программистов, и они распределены по разным странам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 17:54:57 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
oson, Сейчас модно говорить, что динамическая типизация позволяет ускорять процесс разработки, но на мой взляд очень спорное утверждение. Например, IDE может показать методы объекта только в 30% случаев по информации от разработчиков Idea. Если нет нормальной документации, то задолбаешься разбирать что же приходит в ответ на вызов метода. Как раз недавно писал на Ruby скрипты развертывания, так вот пришлось лезть в код библиотеки что бы понять тип возвращаемого объекта, утиная типизация тоже вызывет вопросы. И опять же в основном быстро писать код не нужно, проекты проваливаются не из за медленного написания, а по другим причинам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2012, 23:42:24 |
|
||
|
Как понять Groovy?
|
|||
|---|---|---|---|
|
#18+
dominator Как раз недавно писал на Ruby скрипты развертывания, так вот пришлось лезть в код библиотеки что бы понять тип возвращаемого объекта Когда интересовался руби (лет 5 назад), мне сильно не понравилась их документация. Она какая-то ущербная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2012, 11:09:52 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37944099&tid=2131013]: |
0ms |
get settings: |
15ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 338ms |
| total: | 514ms |

| 0 / 0 |
