LINUX.ORG.RU

Как можно вообще писать на этой динамике?

 ,


1

3

Слегка поменялась структура данных и теперь целый день приходится сидеть и выискивать места на клиенте где поломался повязанный на нее код. Вместо того, чтобы компилятор/статический анализатор автоматом пометил бы 99% этих мест ошибкой автоматически. Ненависть!!!

Как вообще люди в здравом уме соглашаются на этом дерьме писать?

★★★★

Вы просто не умеете ее готовить ©

ZuBB ★★★★★
()

думал толксы

это что-то свежее

Bad_ptr ★★★★★
()

А почему у тебя работа со структурой данных, полученной из-вне и не преобразованной в какой-либо постоянный внутренний формат, не сосредоточена в одном единственном месте?

PolarFox ★★★★★
()

JS для сильных, опытных программистов, которые не ошибаются. Тот, кто способен эффективно программировать на JS, может с легкостью перейти на любой другой язык.

amomymous ★★★
()

думаешь спасло бы?

Поднять уровень вывода ошибок, подключить jshint/jslint, вместо набора параметров передавай «JSON-объекты», kdiff3

swwwfactory ★★
()
Ответ на: комментарий от PolarFox

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

Т.е. условно было

{ 
  name: "Some name",
  parameters: [
    {name: "Param name", other properties.. }
    other parameters...
  ]
}

Стало

{ 
  name: "Some name",
  groups: [
    {
      groupName: "",
      parameters: [
        {name: "Param name", other properties.. },
        other parameters...
      ]
    },
    other groups...
  ]
}

И на эту структуру куча логики клиентской завязана.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от amomymous

Да уж, после js любой язык раем покажется

Nagwal ★★★★
() автор топика
Ответ на: комментарий от swwwfactory

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

Nagwal ★★★★
() автор топика
Ответ на: комментарий от Nagwal

На серваке (java) поменять структуру объекта у меня заняло 15 минут вместе с тестированием. Над клиентом вот уже третий час сижу вылавливаю баги.

Nagwal ★★★★
() автор топика

Есть такие варианты:

1. Обмазывать всё кучей юнит-тестов. Поскольку код работы с DOM тестировать сложно, надо использовать фреймворки типа ангуляра ну или руками разбивать код на слои. Надо что-то поменять — поменял, прогнал юнит-тесты, починил, отдал на тестирование.

2. Обмазывать всё кучей функциональных тестов. Подход хорош тем, что тесты можно не писать а отдать на откуп тестировщикам. А если не углядели, я не виноват.

3. Писать на типизированном языке, близком к JavaScript типа TypeScript.

4. Использовать описание типов в комментариях, прогонять весь код через статические чекеры. Тут точно не скажу, но вроде есть такое. По сути это JavaScript с опциональными типами получится. Я бы копал в эту сторону, совмещая с первым вариантом и вторым по возможности.

Legioner ★★★★★
()
Ответ на: комментарий от Nagwal

Это одна из стратегий, есть еще другие

В конце концов надежнее всего замуроваться в пещере и не выходить никуда...

swwwfactory ★★
()

Блин, выпустим релиз софтины, перепишу все к чертовой матери на typescript

Nagwal ★★★★
() автор топика
Ответ на: комментарий от Nagwal

а со своего сервера

Ну тогда сами себе буратины.

PolarFox ★★★★★
()
Ответ на: комментарий от Nagwal

И что, это поможет в ситуации, когда сервак меняет структуру данных? По-моему, ты на чём не пиши - везде будут проблемы, просто нужно писать на JS модульно, а не размазывать весь код по хендлерам с jquery.

menangen ★★★★★
()
Ответ на: комментарий от Legioner

1. Обмазывать всё кучей юнит-тестов. Поскольку код работы с DOM тестировать сложно, надо использовать фреймворки типа ангуляра ну или руками разбивать код на слои. Надо что-то поменять — поменял, прогнал юнит-тесты, починил, отдал на тестирование.

Ангуляр там не поможет. Он и так используется, но ломается все внутри кода, обертывающего сторонние компоненты (highcharts) о которых ангуляр ни сном ни духом.

Выглядит вот так: http://s17.postimg.org/j6i3dvgzj/Untitled.png Т.е. мы потащили dnd параметр, из него берется куча инициализационных данных для графика (тип, границы, единица измерения параметра итд.)

Теперь параметры надо сгруппировать.

2. Обмазывать всё кучей функциональных тестов. Подход хорош тем, что тесты можно не писать а отдать на откуп тестировщикам. А если не углядели, я не виноват.

Я вот слабо себе представляю как то, что есть в системе - обмазать тестами.

3. Писать на типизированном языке, близком к JavaScript типа TypeScript.

Выпустим релиз - перепишу к чертовой бабушке на TypeScript или еще что-то в этом духе.

Nagwal ★★★★
() автор топика

Все динамически типизированные языки но, но JavaScript умудряется выделяться даже на их фоне.

Зато его разработал один человек за неделю.

tailgunner ★★★★★
()
Ответ на: комментарий от menangen

По-моему, ты на чём не пиши - везде будут проблемы, просто нужно писать на JS модульно, а не размазывать весь код по хендлерам с jquery.

На сервере почему то проблем не возникло. Компилятор моментально показал ошибки, поправить было делом 10-15 минут.

Код не размазан, он в 2-3 модулях, относящихся ровно к этому куску. Но модули большие и хитровыебаные.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от tailgunner

Зато его разработал один человек за неделю.

Его уже не первое десятилетие пилит гигантский консорциум. Могли бы и запилить статическую типизацию. Хотя бы опционально.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от Nagwal

Его уже не первое десятилетие пилит гигантский консорциум. Могли бы и запилить статическую типизацию. Хотя бы опционально.

Ко-ко-ко Веб, ко-ко-ко обратная совместимость.

Но вроде в ES6 будет.

tailgunner ★★★★★
()
Ответ на: комментарий от Deleted

Я там в комментах выше кидал скрин основного окна системы. Как ты себе представляешь покрытие данного функционала юнит тестами?

Nagwal ★★★★
() автор топика
Ответ на: комментарий от Deleted

И чем мне тут selenium поможет? Ломается то не взаимодействие клиент - сервер. Ломается именно визуалка.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от Nagwal

На серваке (java) поменять структуру объекта у меня заняло 15 минут
вместе с тестированием. Над клиентом вот уже третий час сижу
вылавливаю баги.

а я в свои лучшии годы — вообще менял структуру объекта за 5 минут :-) [не зависимо от языка] :-)

user_id_68054 ★★★★★
()
Ответ на: комментарий от Nagwal

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

Где-то тут еще хипстерки совали всем свою мочу.жс.

Deleted
()

Как вообще люди в здравом уме соглашаются на этом дерьме писать?

Чего только люди не делают за деньги...

find/replace в помощь :)

qaqa ★★
()
Ответ на: комментарий от Deleted

Ну посмотри скрин в комментариях выше. Как он мне поможет определить что на графике, т.е. внутрях highcharts, не отрисовался или тем более отрисовался некорректно параметр?

Nagwal ★★★★
() автор топика
Ответ на: комментарий от ritsufag

Выпустим релиз - перепишу на нем или чем-то похожем. Вон scala говорят в js компилиться умеет. Или kotlin.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от Nagwal

Выпустим релиз - перепишу

Рain-Driven Development в действии.

qaqa ★★
()
Ответ на: комментарий от Deleted

Можн. Только вот чем мне это поможет? Я могу любой параметр на любой график добавить. Т.е. по идее можно наверное написать к этому еще и пост-валидатор, сравнивающий фактическое состояние внутри чарта со структурой параметра, котрый на него кинули. Но это получается что код тестов будет чуть ли не на порядок сложнее самого кода страницы. И при изменении структуры параметров - его так же придется переделывать. Какой смысл?

Nagwal ★★★★
() автор топика

Как вообще люди в здравом уме соглашаются на этом дерьме писать?

а ты чего на этом писал если считаешь что в здравом уме?

q11q11 ★★★★★
()
Ответ на: комментарий от q11q11

а ты чего на этом писал если считаешь что в здравом уме?

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

А вообще - просто потому что некому больше. Бюджет проекта крайне ограничен пока. Как только будет бабло - наймем отдельного человека на написание морды

Nagwal ★★★★
() автор топика
Последнее исправление: Nagwal (всего исправлений: 1)
Ответ на: комментарий от Deleted

Ты думаешь я просто так, just for fun лезу корежить структуру данных? Логично что если в ней происходят измения, то потому что поменялись требования к работе с ней и скорее всего как раз в плане отображения. А это значит что и правила валидации тоже меняются ;)

Nagwal ★★★★
() автор топика

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

Окей.

aedeph_ ★★
()

Как вообще люди в здравом уме соглашаются на этом дерьме писать?

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

ya-betmen ★★★★★
()
Ответ на: комментарий от aedeph_

Была бы куча хардкода - проблем бы не было. Там проблема именно в том, что 100500 параметров берутся из конфигурации. Примерно вот такой http://pastebin.com/f5WvGsER

И если что то в этой структуре меняется - то возникает адская попоболь.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от ya-betmen

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

Я еще могу простить человеку некрофилию и копрофагию, но никак не любовь к яваскрипту.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от tailgunner

Все критичные параметры жизнедеятельности мониторятся напрямую на прикроватнике/аппарте ивл. Я же этой системой их не заменяю.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от Nagwal

I bet, на серваке на JS у тебя заняло бы не сильно больше.

zz ★★★★
()

Не надо было пренебрегать юнит-тестами и планированием.
Страдай теперь, ССЗБ.

Goury ★★★★★
()
Ответ на: комментарий от tailgunner

Теперь и в больницу страшно попадать.

zz ★★★★
()
Ответ на: комментарий от Goury

Не надо было пренебрегать юнит-тестами и планированием.

Планирование никак не гарантирует отсутствие изменений в условиях и необходимость рефакторинга. А юнит-тесты как замена проверки компилятором - говно (хотя для динамики выхода нет).

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.