Регистрация  |  Вход

Контекстная боль

Этот пост пишу чтобы излить душу.

Давно уже на проектах с толстым клиентом (это не тот толстый клиент про которого вы могли подумать ) первоочередным требованием является создание реюзабильных компонентов. Я уже не раз выкладывал в этой ветке подборки материалов как пилить компоненты под Ангуляр JS. Но моя боль будет касаться любой области где есть реюзабельные компоненты.

КЛИЕНТ, ЗАЧЕМ ТЕБЕ УНИВЕРСАЛЬНЫЙ КОМПОНЕНТ ЕСЛИ ТЫ ТУДА ХОЧЕТ ВПИХНУТЬ КУЧУ КОНТЕКСТНО ЗАВИСИМОЙ ЛОГИКИ???

Я реально уже устал заниматься этим костылеписанием. Начинается все красиво - пилишь компонент которому достаточно передать ID объекта. Компонент его принимает подтягивает нужные данные и строит красивый UI. И потом ты используешь этот компонент на любой странице - достаточно только объявить его и передать ID. Супер!!! Но потом пошло - ХОЧУ чтобы на этой странице в компоненте вместо инпут тега был селект, а на той добавить кнопочку, а на третьей скрыть часть функционала. МЛЯ!!!! И нафига тогда было делать этот компонент? Для самоутверждения? Проще было бы тупо накопипастить и внести изменения под каждую страницу. А нет. С виду у нас теперь вроде тоже все красиво - есть компонент, в него передается ID И ПЛЮС название страницы, а внутри начинается свистопляска с IF/ELSE.

ГДЕ мой любимый смайл

И как думаете какой выход из сложивщейся ситуации?

Этот пост пишу чтобы излить душу. 

Давно уже на проектах с толстым клиентом (это не тот толстый клиент про которого вы могли подумать :D ) первоочередным требованием является создание реюзабильных компонентов. Я уже не раз выкладывал в этой ветке подборки материалов как пилить компоненты под Ангуляр JS. Но моя боль будет касаться любой области где есть реюзабельные компоненты.

КЛИЕНТ, ЗАЧЕМ ТЕБЕ УНИВЕРСАЛЬНЫЙ КОМПОНЕНТ ЕСЛИ ТЫ ТУДА ХОЧЕТ ВПИХНУТЬ КУЧУ КОНТЕКСТНО ЗАВИСИМОЙ ЛОГИКИ???

Я реально уже устал заниматься этим костылеписанием. Начинается все красиво - пилишь компонент которому достаточно передать ID объекта. Компонент его принимает подтягивает нужные данные и строит красивый UI. И потом ты используешь этот компонент на любой странице - достаточно только объявить его и передать ID. Супер!!! Но потом пошло - ХОЧУ чтобы на этой странице в компоненте вместо инпут тега был селект, а на той добавить кнопочку, а на третьей скрыть часть функционала. МЛЯ!!!! И нафига тогда было делать этот компонент? Для самоутверждения? Проще было бы тупо накопипастить и внести изменения под каждую страницу. А нет. С виду у нас теперь вроде тоже все красиво - есть компонент, в него передается ID И ПЛЮС название страницы, а внутри начинается свистопляска с IF/ELSE.

ГДЕ мой любимый смайл

[img]https://az705183.vo.msecnd.net/onlinesupportmedia/onlinesupport/media/skype/screenshots/fa12330/emoticons/facepalm_80_anim_gif.gif[/img]

И как думаете какой выход из сложивщейся ситуации?

Dmitry Shnyrev
И как думаете какой выход из сложивщейся ситуации?

Динамическая генерация форм. Оч. Удобно.

[quote="Dmitry Shnyrev"]И как думаете какой выход из сложивщейся ситуации?[/quote]

Динамическая генерация форм. Оч. Удобно.

wilder
Динамическая генерация форм. Оч. Удобно.

Неожиданный ответ Формы это частный случай.

Кстати про формы. Можешь рассказать как ты это реализовал.
Например у меня уже есть волшебный компонент который строит форму вот по такому дескриптору

<form-builder
object-type="Supplier_Invoice__c"
record="$ctrl.invoice"
fieldset="['Name', 'Number__c', 'Invoice_Date__c', 'Freight__c', 'Payment_Terms__c']>
</form-builder>

[quote="wilder"]Динамическая генерация форм. Оч. Удобно.[/quote]
Неожиданный ответ :D Формы это частный случай.

Кстати про формы. Можешь рассказать как ты это реализовал. 
Например у меня уже есть волшебный компонент который строит форму вот по такому дескриптору

[code]
<form-builder
   object-type="Supplier_Invoice__c"
   record="$ctrl.invoice"
   fieldset="['Name', 'Number__c', 'Invoice_Date__c', 'Freight__c', 'Payment_Terms__c']>
</form-builder>
[/code]

Дима, а кто тебе дает задачу "реюзабельный компонент"? И как такую задачу птм принимают (если в итоге этот компонент будет допиливаться и уже он не "реюзабельный")?
Мне уже давно не говорят КАК делать мою работу. Мне говорят, что должно быть на выходе для конечного пользователя.
Да, есть какие-то ООП патерны. Типа, да, повторное использование. Но, вот сколько я СФ занимаюсь, каждый раз, когда планирую, что вот тут-то этот код можно будет в двух местах заиспользовать, то в итоге получается только 10% повторяющегося кода. И сколько раз я делал и изначально все было под 90%, в процессе или через пару месяцев (после того, как поработали и тут чуток, и там немного подправить) приходил к 10% (цифры взяты чисто по ощущениям :-) ).
Вот повторяющийся код для C# или Java - чтение, запись, удаление объекта. Да, базовый, а наследники только название таблицы да поля подставляют. Повторное? 100%. А в СФ? Я вот подумал минутку - у меня такого нет. Бизнес логику пишу. Она уникальна. Например. При одних исходных данных создать такой объект, при других - другой. При один параметрах обновить объекты, при других - удалить.

Кстати, Дима, вот ты поднял вопрос и тут я для себя окончательно решил, че меня прет в СФ - вместо написания сервис классов, которые на бизнес логику не влияют, ты пишешь ИСКЛЮЧИТЕЛЬНО бизнес логику. Очень редко когда я занимаюсь рисованием страниц. И то, как ты помнишь, это Visualforce с минимумом JavaScript и CSS.

Дима, с 6ю годами ты обязан говорить своему начальству, что сам разберешься как лучше запрограммить.
Я конечно понимаю, что надо деньги зарабатывать и, может, не стоит/хочется рассказывать что-то начальству; но, мне кажется, стоит пробовать объяснять, что ты не просто так 6 лет фигачишь ПО и сам знаешь, как лучше.

Дима, а кто тебе дает задачу "реюзабельный компонент"? И как такую задачу птм принимают (если в итоге этот компонент будет допиливаться и уже он не "реюзабельный")?
Мне уже давно не говорят КАК делать мою работу. Мне говорят, что должно быть на выходе для конечного пользователя.
Да, есть какие-то ООП патерны. Типа, да, повторное использование. Но, вот сколько я СФ занимаюсь, каждый раз, когда планирую, что вот тут-то этот код можно будет в двух местах заиспользовать, то в итоге получается только 10% повторяющегося кода. И сколько раз я делал и изначально все было под 90%, в процессе или через пару месяцев (после того, как поработали и тут чуток, и там немного подправить) приходил к 10% (цифры взяты чисто по ощущениям :-) ).
Вот повторяющийся код для C# или Java - чтение, запись, удаление объекта. Да, базовый, а наследники только название таблицы да поля подставляют. Повторное? 100%. А в СФ? Я вот подумал минутку - у меня такого нет. Бизнес логику пишу. Она уникальна. Например. При одних исходных данных создать такой объект, при других - другой. При один параметрах обновить объекты, при других - удалить.

Кстати, Дима, вот ты поднял вопрос и тут я для себя окончательно решил, че меня прет в СФ - вместо написания сервис классов, которые на бизнес логику не влияют, ты пишешь ИСКЛЮЧИТЕЛЬНО бизнес логику. Очень редко когда я занимаюсь рисованием страниц. И то, как ты помнишь, это Visualforce с минимумом JavaScript и CSS.

Дима, с 6ю годами ты обязан говорить своему начальству, что сам разберешься как лучше запрограммить.
Я конечно понимаю, что надо деньги зарабатывать и, может, не стоит/хочется рассказывать что-то начальству; но, мне кажется, стоит пробовать объяснять, что ты не просто так 6 лет фигачишь ПО и сам знаешь, как лучше.

А ответ на вопрос нормально не написал :-)


Что делать? Общаться с начальством и объяснять, что ты сам разберешься с кодом, а они пущай тебе рассказывают куда и какие поля рисовать.

А ответ на вопрос нормально не написал :-)


Что делать? Общаться с начальством и объяснять, что ты сам разберешься с кодом, а они пущай тебе рассказывают куда и какие поля рисовать.

Dmitry Shnyrev
Неожиданный ответ Формы это частный случай.

Пока есть полностью рабочий вариант, только для <apex:repeat> и <fieldset>, для angular щас пытаюсь сделать решение на основе http://schemaform.io/

[quote="Dmitry Shnyrev"]Неожиданный ответ  Формы это частный случай.[/quote]

Пока есть полностью рабочий вариант, только для <apex:repeat> и <fieldset>, для angular щас пытаюсь сделать решение на основе http://schemaform.io/

Andrew Muzychuk
Дима, с 6ю годами ты обязан говорить своему начальству, что сам разберешься как лучше запрограммить.
Я конечно понимаю, что надо деньги зарабатывать и, может, не стоит/хочется рассказывать что-то начальству; но, мне кажется, стоит пробовать объяснять, что ты не просто так 6 лет фигачишь ПО и сам знаешь, как лучше.

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

Конечно авторитет во многих случаях дает свои плоды, но авторитет есть не только у меня

[quote="Andrew Muzychuk"]Дима, с 6ю годами ты обязан говорить своему начальству, что сам разберешься как лучше запрограммить. 
Я конечно понимаю, что надо деньги зарабатывать и, может, не стоит/хочется рассказывать что-то начальству; но, мне кажется, стоит пробовать объяснять, что ты не просто так 6 лет фигачишь ПО и сам знаешь, как лучше.[/quote]

Вот тут у меня есть один недостаток. Я НЕ люблю спорить. Я предлагаю свою точку зрения, а решение принимают другие люди. Когда настаивают на другом подходе, я не вдаюсь в полемику. Возможно в этом и проблема - знаю нескольких программистов которые с пеной у рта могут отстаивать свою точку зрения, и у них все по жизни хорошо :) Как говорится наглость второе счатье. :D

Конечно авторитет во многих случаях дает свои плоды, но авторитет есть не только у меня :D 

Dmitry Shnyrev
Как говорится наглость второе счатье.

Не наглость а уверенность в себе :)

[quote="Dmitry Shnyrev"]Как говорится наглость второе счатье. [/quote]

Не наглость а уверенность в себе :)