Давайте соберем те вещи (примеры кода), которые никогда не стоит использовать. 1. Ни в коем случае не используйте хардкод. Как можно захардкодить строку JSON'a, в которой куча id, а потом десериализовать его и вставить в БД. Как такое может придти в голову? Кст. судя по комментариям в коде, этот человек есть на форуме. Не буду разглашать имя, дабы не портить его репутацию здесь.
Вставка ID записей - это такая крайняя степень хардкода, что даже наверное к хардкоду и не относится. Это просто ошибка, основанная на непонимании некоторых вещей.
А вот про то, что понимать под "хардкодом": плохим или допустимым, это можно обсудить
Это когда пытаются кастомный функционал натянуть на Standard Layout. Ну возьмите, напишите новую кастомную страницу VF с нуля, на худой конец встройте <apex:details> в кастомную страницу и потом пилите злой javascript. А то я столько навидался костылей, когда пытаются бороться с Same-origin policy на кастомной странице. Чего только не придумывают. Даже делают через static resources + get параметры (привет wilder крутое было решение) чтобы передать данные из inline VF в Standard Layout. Вот это ЖЕСТЬ!
Плюс меня вырубают задачи, когда в абсолютно кастомном функционале пытаются использовать стандартные объекты. Ладно если это для внутреннего использования. Но когда это для продукта, который будет устанавливаться клиентам!!! А потом голову ломают как обойти обязательные поля, которые насоздавал заказчик, validation rules заказчика или триггеры, которые висят на стандартном объекте. Нафига? Вы приходите к клиенту чтобы добавить ему нужный функционал, так пусть это будет обособленное приложение в вакууме, а не франкенштейн который не работает из-за чужого кода или вообще ломает чужой орг нафиг!
Хардкод - это такие решения, которые в принципе работают в Орге назначения и формально решают поставленные задачи. Но их невозможно или сложно (т.е. нужно дописывать прям в коде) расширять, и\или они не резистентны к изменениям.
А вписанные-в-код "живые" АйДи в принципе не будут работать нигде, кроме того Орга где и были созданны. Или в вашем примере имеются ввиду все-таки не вписанные-в-код "живые" АйДи, а все таки другая ситуация?
Вот например, пример СФного мягкого "хардкода" (в моем понимании - все ИМХО). Очень часто, нам нужно дать записи РекТайп АйДи. В одной из самых первых тем, Дмитрий указал мне, что нужно выцеплять его по: девелопер нейм (неизменно), типа объекта и АктивенЛи.
А если я получу РекТайп АйДи (только) по обычному имени в квери. Имени которое может меняться. Это можно назвать мягким "хардкодом" (тк "переменное" имя просто "вписано" в код)? мы изначально создаем ситуацию не резистентую к переменам. Плюс обращение к РекТайпу по обычному имени можно организовать и в формулах.
А на каком этапе это делалось? установка пакета? тесты? или вызов страницы?
Тесты
Может человеку было лень имплементить мок класс для теста колаутов.. не вижу ничего плохого в таких хардкодах + хотелось бы узнать, что именно было в этом жсоне?
и да, я в корне не согласен с этим. хардкод SF Id - плохо, хардкод на всякий случай какого нить урла(если у челов почесались руки и они снесли какой нить кастом сетинг) что бы использовать его по умолчанию - хорошо
Кст. судя по комментариям в коде, этот человек есть на форуме. Не буду разглашать имя, дабы не портить его репутацию здесь.
А вот комментарии в коде это всегда хорошо. А то иной раз(почему иной, у нас на фирме комментарии оставляют всего лишь пару человек) встречаешь q1, jopa, blead, bobo и тд названия переменных....
Давайте соберем те вещи (примеры кода), которые никогда не стоит использовать. 1. Ни в коем случае не используйте хардкод. Как можно захардкодить строку JSON'a, в которой куча id, а потом десериализовать его и вставить в БД. Как такое может придти в голову? Кст. судя по комментариям в коде, этот человек есть на форуме. Не буду разглашать имя, дабы не портить его репутацию здесь.
Смотри как совпало ну просто мой тест один в один который не так давно писал для одной компании Если ты конечно про меня ?
хардкод на всякий случай какого нить урла(если у челов почесались руки и они снесли какой нить кастом сетинг) что бы использовать его по умолчанию - хорошо
А вот комментарии в коде это всегда хорошо. А то иной раз(почему иной, у нас на фирме комментарии оставляют всего лишь пару человек) встречаешь q1, jopa, blead, bobo и тд названия переменных....
Видимо вы и ваши коллеги не читали Роберта Мартина.
А вот комментарии в коде это всегда хорошо. А то иной раз(почему иной, у нас на фирме комментарии оставляют всего лишь пару человек) встречаешь q1, jopa, blead, bobo и тд названия переменных....
Видимо вы и ваши коллеги не читали Роберта Мартина.
Я не читал, а что он утверждает, jopa123 это хорошо?
Меня в последнее время поражает уровень разработчиков! Люди думают, если нашли пример в сети, скопировали, поменяли названия переменных, то им больше не надо учиться!
Они даже не заработают на проде, если были созданы на fullcopy СБ.
так все-таки, правда или не правда что у fullcopy СБ одинаковые АйДи с Продом?
но даже если это и так, то все равно такие АйДи в теории можно бы использовать только для записей, которые существовали в Проде на момент создания fullcopy СБ.
но даже если это и так, то все равно такие АйДи в теории можно бы использовать только для записей, которые существовали в Проде на момент создания fullcopy СБ.
но даже если это и так, то все равно такие АйДи в теории можно бы использовать только для записей, которые существовали в Проде на момент создания fullcopy СБ.
Абсолютно точно!
ага, значит все так одинаковы у уже существовавших записей. Хорошо, что у нас этого никто не знает, а то началась бы хард-код эпидемия.
Давайте соберем те вещи (примеры кода), которые никогда не стоит использовать. 1. Ни в коем случае не используйте хардкод. Как можно захардкодить строку JSON'a, в которой куча id, а потом десериализовать его и вставить в БД. Как такое может придти в голову? Кст. судя по комментариям в коде, этот человек есть на форуме. Не буду разглашать имя, дабы не портить его репутацию здесь.
вот именно, но, когда есть jopa123 + коммент это хорошо, а когда просто jopaq1 это плохо
Название переменной + 10 строк комментариев над ней, зачем она нужна и где она используется, то вообще будет отлично!
ну тогда никогда так не не делайте)
Ребята, читайте SICP!
Мне уже интересно посмотреть на те решения, которые вы пишите на СФ, посмотреть на чистый, понятный код)))
Меня в последнее время поражает уровень разработчиков! Люди думают, если нашли пример в сети, скопировали, поменяли названия переменных, то им больше не надо учиться!
то что нашли пример, это уже огромный плюс. был у нас на работе(.net) один чел, знал на собеседовании все на уровне лида, а как дошло дело прикрутить календарик jquery - 2 недели делал -__-
то что нашли пример, это уже огромный плюс. был у нас на работе(.net) один чел, знал на собеседовании все на уровне лида, а как дошло дело прикрутить календарик jquery - 2 недели делал -__-
Давайте соберем те вещи (примеры кода), которые никогда не стоит использовать. 1. Ни в коем случае не используйте хардкод. Как можно захардкодить строку JSON'a, в которой куча id, а потом десериализовать его и вставить в БД. Как такое может придти в голову? Кст. судя по комментариям в коде, этот человек есть на форуме. Не буду разглашать имя, дабы не портить его репутацию здесь.
Смотри как совпало ну просто мой тест один в один который не так давно писал для одной компании Если ты конечно про меня ?
то что нашли пример, это уже огромный плюс. был у нас на работе(.net) один чел, знал на собеседовании все на уровне лида, а как дошло дело прикрутить календарик jquery - 2 недели делал -__-
Умение гуглить сейчас очень важно.
умение гуглить иногда гораздо важнее теоретических знаний
Да нет спасибо своей рекламы хватает,но если ты про мой код тогда можешь сразу говорить,я делал тест где вот вообще все один в один сходится там было все к месту.
Да нет спасибо своей рекламы хватает,но если ты про мой код тогда можешь сразу говорить,я делал тест где вот вообще все один в один сходится там было все к месту.
умение гуглить иногда гораздо важнее теоретических знаний
Кст, от чего повыщается ваша самооценка от изящности придуманного решения или от сумму, которую вам дают за конечный результат?
Моя самооценка всегда на одном уровне. Мне просто приятно найти самому решение какой либо проблемы. Думаю так и у всех. И будет гораздо приятнее если за это решение меня поощрят деньгами. Учитывая что все упирается в сроки сдачи какого либо задания(не знаю как у вас, но у нас заказчики не платят за овертайм), то времени думать над изобретением колеса не приходится. Плюс ко всему этому, работа обычно ведется уже на существующих проектах, которые просто нужно фиксить, допиливать и тд. И вы должны понимать что внедрить какое-то крутое решение, в большой проект получится только с очень большим трудом и затратами и здесь еще не совсем очевиден выигрыш от всего этого(ну только если попонтоваться, что мол я написал твой код в 4 строки, вместо 8, но он работает точно также и с такой же скоростью - это как с новыми айфонами)
Важные решения нужно продумывать на этапе проектирования, а не за день до релиза.
Да нет спасибо своей рекламы хватает,но если ты про мой код тогда можешь сразу говорить,я делал тест где вот вообще все один в один сходится там было все к месту.
Ты погодь, сейчас окажется что после тебя кто-то правил классы, а тесты не поправил, но в итоге валятся же тесты, значит ты и виноват))
один чел, знал на собеседовании все на уровне лида, а как дошло дело прикрутить календарик jquery - 2 недели делал -__-
в свое время я на лида конечно не претендовал, то тот плагин календарик (если мы об одном и том же говорим) прикрутить заняло примерно 2 недели. И то не все вопросы решены, например нет автоподгузки новых записей по мере перехода от месяца к месяцу (если не перерисовывать с вновь выквериными записями календарную секцию каждый раз при переходе с месяца на месяц)... так что если есть возможность - спросите, как у вас этот момент работает.
рикрутить заняло примерно 2 недели. И то не все вопросы решены, например нет автоподгузки новых записей по мере перехода от месяца к месяцу (если не перерисовывать с вновь выквериными записями календарную секцию каждый раз при переходе с месяца на месяц).
календарик это я так дейтпикер называю) так что думаю мы о разных вещах) вы наверно о каком нить fullcalendar
Эвенты (которые есть наши СФ записи) одномоментно "грузятся" в Календарь либо просто разматываемание их Репитором, либо приходят JSONом (там была веселая проблемка с этим, слово end (or Start) зарезервирован в Апексе, пришлом перешивать объекты в JS).
А что есть отображение записей в календарной сетке? Это просто список такой. А если список - то каковы его пределы? Никак нельзя оставлять его без контроля.
так вот если евенты разматываются Рипитором, то получается что код упадет при лимите ВФ Листа или итераци Репитора. Но даже если подгужать одномоментно JSONом - то все равно нужно "пагинировать" пришедшие евенты, разбивать на группы, по месяцам или тек месяц +\- еще месяц.
Но если подгужена только порция евентов, то как подгужать новые при переходе с месяца на месяц? Перерисовывая сетку-секцию или Аджаксом?
если есть рабочий код, то дайте плиз, как будет время - я почитаю с удовольствием.
Ты хочешь, чтобы на форуме тебя зарекламировали? Тут, наверно, вопрос к Дмитрию, я думаю, это выльется тебе в определенную сумму.
у меня тут все бесплатно, все для людей, все для вас, дорогие форумане. Хотите себя разрекламировать? Все в ваших руках - личная страница с информацией (aka можно использовать как резюме) - статьи в блоге - активность на форуме Сейчас еще одна фишка на подходе.
один чел, знал на собеседовании все на уровне лида, а как дошло дело прикрутить календарик jquery - 2 недели делал -__-
в свое время я на лида конечно не претендовал, то тот плагин календарик (если мы об одном и том же говорим) прикрутить заняло примерно 2 недели. И то не все вопросы решены, например нет автоподгузки новых записей по мере перехода от месяца к месяцу (если не перерисовывать с вновь выквериными записями календарную секцию каждый раз при переходе с месяца на месяц)... так что если есть возможность - спросите, как у вас этот момент работает.
Я смотрю тут очень многие вместе работают и решили выплеснуть эмоции на <noname> товарища?
UPD: дочитал дальше - не вместе работаете, просто совпало.
Была бы у меня в свое время такая возможность, сколько бы я гнева бы выплеснул. А так носил все в себе
Тема просто огонь получилась!!!! Никогда такой активности не наблюдал и ничего не читал с таким интересом и улыбкой.
так вот если евенты разматываются Рипитором, то получается что код упадет при лимите ВФ Листа или итераци Репитора. Но даже если подгужать одномоментно JSONом - то все равно нужно "пагинировать" пришедшие евенты, разбивать на группы, по месяцам или тек месяц +\- еще месяц.
Но если подгужена только порция евентов, то как подгужать новые при переходе с месяца на месяц? Перерисовывая сетку-секцию или Аджаксом?
если есть рабочий код, то дайте плиз, как будет время - я почитаю с удовольствием.
Помню, Maxim Elets, делал именно такую "красоту". Я думаю он будет не против поделиться опытом. Результат получился супер!
так вот если евенты разматываются Рипитором, то получается что код упадет при лимите ВФ Листа или итераци Репитора. Но даже если подгужать одномоментно JSONом - то все равно нужно "пагинировать" пришедшие евенты, разбивать на группы, по месяцам или тек месяц +\- еще месяц.
Но если подгужена только порция евентов, то как подгужать новые при переходе с месяца на месяц? Перерисовывая сетку-секцию или Аджаксом?
если есть рабочий код, то дайте плиз, как будет время - я почитаю с удовольствием.
Помню, Maxim Elets, делал именно такую "красоту". Я думаю он будет не против поделиться опытом. Результат получился супер!
То было полностью кастомное решение на backbone, если мы про одно и тоже)
То было полностью кастомное решение на backbone, если мы про одно и тоже)
Я про последний проект с которого я ушел - timeline сетка, на которой показываются "не будем говорить что". Это конечно не календарь в чистом виде, но принцип тот же - показать данные в определенные промежуток времени и навигация по времени с подгрузкой/перегрузкой данных.
Меня бесит вот что. Дали проект на доработку функционала. Хочешь сделать все красиво, заюзать Label, разделить код и т.д. Но тебе говорят что это не надо, и мы не хотим что бы так было. И пошло поехало( Смотришь через год на проект в целом, где были сделаны сотни правок и доработок и волосы седеют. Понимаешь, что новому человеку в ЭТОМ разобраться будет крайне трудно. А ведь переделать уже поздно! Все завязано друг на друга.
Меня бесит вот что. Дали проект на доработку функционала. Хочешь сделать все красиво, заюзать Label, разделить код и т.д. Но тебе говорят что это не надо, и мы не хотим что бы так было. И пошло поехало( Смотришь через год на проект в целом, где были сделаны сотни правок и доработок и волосы седеют. Понимаешь, что новому человеку в ЭТОМ разобраться будет крайне трудно. А ведь переделать уже поздно! Все завязано друг на друга.
Это проблема большинства компаний. Нужно организационно внедрять стандарты на все процессы (разработка, тестирование, разворачивание продукта на орге заказчика). Добро пожаловать в Agile.
Это проблема большинства компаний. Нужно организационно внедрять стандарты на все процессы (разработка, тестирование, разворачивание продукта на орге заказчика). Добро пожаловать в Agile.
А для этого нужны опытные архитекторы или очень опытные разработчики, которые уже занимались вопросами разработки архитектуры приложения (а их просто так не найдешь ) А в 90% компаний - нашли разработчика, который умеет разрабатывать, он и разрабатывает. Отлично и быстно разрабатывает. Но млин через полгода понимает что надо было изначально идти другим путем Мне кажется идеально или даже хорошо спроектированных и разработанных приложений не существует Это миф.
Мне кажется идеально или даже хорошо спроектированных и разработанных приложений не существует Это миф.
Хорощо спроектированные приложения существуют. Также есть хорошие команды разаработчиков. Есть люди которые умееют наладить процесс. В общем разработкой должен заниматься не один человек, не два и не три, конечно, зависит от проекта и задач. Но, когда есть бизнесс аналитик, менеджер, ахитектор, тим лид, скарам мастер, клиентские и серверные разработчики, спец по БД, админ - это правда круто. Работать в такой команде одно удовольствие.
Чтобы оживить тему(незнаю почему), напишу что меня сбесило вчера: 1. Кто-то сделал изменение в логике, и потом запутсил тести. Проблема в том что потом етот человек удалил тести которие фейлились.
2. После моих изменений в логике пришлось поправлять тести, так як заметил, что асерти несовсем коректно написани, в асерте нужно писать сначала Expected value а потом Actual value, но человек которий писал тести, етого видимо не знал, и писал раз так, а раз так(весело было разбираться, что и как).
А некоторие тести вообще были без асертов, и виглядили оооочень интерресно:
Я добавил в логику все лиш 1 SOQL и 1 DML, и все System.LimitException, а он как раз и catch'ем не перехвативается. Прийшлось еще и метод переделивать, кто-то оставиль приколный форик, в котором на 250 строк написано ифов, в каждом из которих селект и инсерт.
Снова "хороший" код? На прошлой работе достался легаси php-проект. (Gres тоже успел принять участие) Так вместо того, чтобы как можно раньше уйти от того ужаса, что уже был. Мы по сути начали все прикручивать по горизонтали, т.к. сказали, что нужно главное доделать в течение месяца, а уж потом-то точно все красиво сделаем Угадайте как все затянулось и когда настал момент, в который нам дали время всё красиво переделать? Это я к тому, что то что нам досталось вроде работало, но было абсолютно не расширяемым. А заказчику-то всё равно, работает же.
Да постоянно. И первое что делаю когда принимаю код, беру время на рефакторинг. За это время обычно успеваю и логику понять и очевидные косяки переделать.
Да постоянно. И первое что делаю когда принимаю код, беру время на рефакторинг. За это время обычно успеваю и логику понять и очевидные косяки переделать.
И первое что делаю когда принимаю код, беру время на рефакторинг. За это время обычно успеваю и логику понять и очевидные косяки переделать.
И это правильно! Просто некоторые любят еще сверху костылей написать, зачем приводить код в порядок, если бага/фича небольшая, а потом снова баг и еще и еще, и так в геометрической прогрессии, в итоге код СОВЕРШЕННО нечитаем. Задумайтесь об этом, когда пишете код.
Вот скажите, для кого вы пишите код? Вы думаете, что не только вам придется с ним работать?
Это опять же возвращаясь к тому что мы так жарко обсуждали про писать код проще или по другому. Программисты разные и у каждого разный подход. Никогда всем не угодишь.
У меня свои предпочтения в архитектуре кода, у тебя другие, а у кого-то просто опыта пока не хватает. Так что проблема чужого кода будет всегда и просто с этим надо смириться.
А по поводу переписывать код - на это еще надо решиться. Если например не просят сделать это специально, то я предпочитаю чужой код не трогать без явной необходимости. Нафига тебе брать на себя ответственность за то что накодили до тебя если оно работает?
А по поводу переписывать код - на это еще надо решиться. Если например не просят сделать это специально, то я предпочитаю чужой код не трогать без явной необходимости. Нафига тебе брать на себя ответственность за то что накодили до тебя если оно работает?
Суть в том, что оно всегда не работает/работает неправильно.
Это опять же возвращаясь к тому что мы так жарко обсуждали про писать код проще или по другому. Программисты разные и у каждого разный подход. Никогда всем не угодишь.
Я не про подходы, а про элементарные вещи, их то уж нужно соблюдать.
Суть в том, что оно всегда не работает/работает неправильно.
:))) если оно не работает/работает неправильно почему заказчик про это сам не говорит и не платит деньги чтобы это починить? Значит его все устраивает, несмотря на то что ты считаешь что оно неправильно работает. Это уже не наши проблемы. Другие дело что если эти проблемы мешают нам работать, то их надо решать. А не так - код плохо написан надо его переписать.
Я обычно работаю так: прихожу на проект - вижу что там жопа, закрываю на это глаза - у меня есть задача и время(деньги) - я ее решаю с нуля и пофиг на то что там может быть что-то похожее. Заказчик видит результат, ему пофиг как ты это написал. Зато у меня душа спокойна что я ничего чужого не сломал и мой код написан красиво (для меня). Если потом заказчик замечает что старое решение работает "хуже" твоего - просто говорю что там все плохо, у меня лучше это, это, это. Хотите чтобы остальное работало также платите.
А если придти на проект и сказать что у вас тут все хреново и надо переписать половину чтобы просто начать работать - поймут только программисты, не бизнесмены, которые бабки платят.
если оно не работает/работает неправильно почему заказчик про это сам не говорит и не платит деньги чтобы это починить? Значит его все устраивает, несмотря на то что ты считаешь что оно неправильно работает. Это уже не наши проблемы. Другие дело что если эти проблемы мешают нам работать, то их надо решать. А не так - код плохо написан надо его переписать.
Млин, по ходу это самое безобидное в этом проекте. А проект то боевой :(. По ходу какой-то товарищ тупо учился на этом проекте - вижу что чувак с опытом - всякие ООП штучки, но мля, все что можно было сделать неправильно в salesforce сделано. Но это еще цветочки - на то что творится в visualforce страницах без слез смотреть невозможно. Мало того что товарищ не знает всех прелестей VF, так еще и по ходу Javascript у него 0. Думал немного поправить страницу в итоге переписал полностью. Надо было сразу писать с нуля - быстрее бы вышло. Вот реально аж жалко стало заказчика.
Млин, по ходу это самое безобидное в этом проекте. А проект то боевой :(. По ходу какой-то товарищ тупо учился на этом проекте - вижу что чувак с опытом - всякие ООП штучки, но мля, все что можно было сделать неправильно в salesforce сделано. Но это еще цветочки - на то что творится в visualforce страницах без слез смотреть невозможно. Мало того что товарищ не знает всех прелестей VF, так еще и по ходу Javascript у него 0. Думал немного поправить страницу в итоге переписал полностью. Надо было сразу писать с нуля - быстрее бы вышло. Вот реально аж жалко стало заказчика.
При чем тут заказчик то? Наверно, тебе придется себя пожалеть, тебе же все исправлять)
Как раз мне то чего себя жалеть? Мне это все переделывать не надо, мне пока за это не платят. Ну собственно и заказчик пока не знает что у него там под капотом, потому что штатных разработчиков у них нет, а старый по ходу ушел не очень по вежливому. А если и попросят исправлять, то буду выставлять счет :). Так что мне наоборот может даже на руку. А вообще кода функционала там не сильно много, я за день все разобрал по коду без объяснения даже функционала. А заказчика жалко потому что он то платил за это же деньги, и наверное не малые.