Здравствуйте, Sinclair, Вы писали:
S>Можно менять структуру кода, без изменения семантики.
И что такой рефакторинг даст? Результат басни "квартет"?
S>Каких например?
Ну, например, устранение конкурирующих сайд-эффектов, увеличение быстродействия или тот же меморилик.
S>Возьмите любой браузер или веб-приложение. Вон, докерс при попытке заказать товар с доставкой на адрес почтового агрегатора выдаёт "card authorization failure", хотя деньги успешно встают на hold.
Ну т.е. фронтенд в вебе?! Надо натянуть сову на глобус по самые уши, чтобы назвать это
все.
PJ>>А типа берем 100к умножаем на 30, потому что 30 можем, выглядит менее абсурдно что ли?
S>30 — это минимальное количество компаний, которые потребляют API, о котором я говорю.
Ага, у и каждой ущерб по 100к.

Абсурд и есть.
S>А вам вообще рассказывают хоть что-то про деньги, или всё же есть изоляция между модулями инженеров и продавцов? Ну, вот сколько стоит разослать гонцов с обновлениями каждому клиенту?
Конечно. Что за изоляция и в чем ее смысл? Как инженеры могут помочь снизить стоимость, если они не знают о чем речь?
S>Сколько стоит установка обновления на каждом из них — уже не вам, а им?
Так про то и речь. И нам деньги и им деньги. И это не веб, а реальное производство, которое надо останавливать, если это не плановое, а реально проблема. И то никто не считает 100к помножим на 30.
S>Если в вашем случае это всё копеечные деньги — считайте, что вам повезло. Это не означает, что можно распространять вашу отвагу в принятии технических решений на области, где крутятся другие деньги.
Началось мерянее копеечкой.

А как же ваша изоляция инженеров от денег?
S>Понимаете, уборщица, выдергивающая кабель из сервера, тоже может говорить "что-то я не слыхала ни про какие сотни тысяч ущерба".
Так я и говорю — куда нам пейзанам.
PJ>>Разумеется оно так и сделано. Даже странно тут предполагать обратное. Была команда File.Save возвращающая void, стала команда MyFile.Save, возвращающая версию и хеш. Нахрена бы это в модуле считать?!
S>Ну вы же сами написали, что модули теперь должны передавать куда-то хеш для снапшота.
Ну вернула MyFile.Save хеш и что с ним дальше должно случиться?
PJ>>Бесплатно? Нет. Да еще и хрен найдешь кого, заказывали как-то внешний аудит кода — туфта на выходе.
PJ>>На РСДН FP считается чем-то средним между лженаукой и черной магией, а DDD бесполезной штукой. Нахрен такие оценщики?
S>
Вот видите, вам уже оценки не нравятся.
Не оценки, а оценщики. Вопреки распротраненному заблуждению, по крайней мере я его наблюдаю тут, авторитет это ни когда условный ты себя считаешь авторитетем, и не когда таким тебя считают твои друзья, а когда авторитетом тебя считаю условный я, потребитель.
И если оценщики никогда не пробовав или не осилив оценивают FP или DDD, то их оценка меня не интересует.
Так же как тебя, и вполне справедливо, не интересуют мои оценки веб апи, ты их все равно будешь делать по-своему.
S>ER — это не про базу данных. Это формализация описания модели; очень часто используется для моделирования благодаря своей простоте.
Модель, база данных, а причем тут API?
S>А, вы хотите прямо так? Не, из бизнеса выпадают требования вроде "обеспечить возможность выгрузки ордеров со всеми атрибутами для синхронизации во внешнюю систему". С учётом того, что никакой внешней системы ещё нет, более детальных требований вы не получите. Просто сейлзы говорят "мы обсуждали с проспектом нашу систему, они спросили 'а у вас есть возможность выгрузки ордеров со всеми атрибутами для синхронизации во внешнюю систему', и мы сказали 'да', потому что на кону сделка на 700k, и конец квартала".
И? А у нас продажники продали спецификацию, которая на момент продажи существовала в виде теоретической математической модели, за 2М емнип. Причем наша компания несет финансовую отвественность за срыв сроков.
Померявшись и поплакавшись друг-другу в жилетку — как это все влияет на архитектуру?
PJ>>Ну если все доводить до идиотизма, то можно и так. А можно сделать один метод GetAvailableProperies где все вернуть в виде списка.
S>И получаем те же яйца, вид сбоку. Вы всего лишь отложили проблему до вызова GetAvailableProperties, и по-прежнему оставили N+1 вызов API вместо 1.
Нет, не те же. В первом случае подписка обещана, во втором нет. Возможно, конечно, что у вас совсем странные разработчки у клиентов (ну или ты их таковыми считаешь), но, обычно, есть большая разница между обещанными данными и возможными.
S>Мы — нет. Но нам не всегда доступна роскошь переписать огромную систему целиком только потому, что в 2005 году у архитекторов не было того опыта, который есть у нас в 2020.
Но сейчас-то вы рандомизируете? В новых API?
S>Конечно. И тогда мы перейдём к другим методикам. А пока мы извлекаем деньги из этой скважины — наиболее эффективным методом.
К каким, если все уже встало? Какие есть методики оживления трупов?
S>А откуда я знаю, что из совпадения этого числа с какой-то формулой от нескольких результатов GetOrdersBatch(x) что-то следует? Откуда я знаю эту формулу?
Из названия типа, разумеется. Не, ну api для прочитать придется конечно. Странно, что ты не ожидаешь этого, но ожидаешь завязывания на контент вывовов.
PJ>>Парой строчек выше. Это ты вот такое "инструкцией" называл? У вас в клиентах дурдом что ли? А как они поймут, что GetOrderTotal возвращает возвращает сумму всех ордеров? Для этого же нужна еще одна инструкция, надо же догадаться посмотреть в ответ...
S>Так я и думал. Сначала идёт бравада, а потом фейспалмы. Оказывается, никакая сигнатура не описывает соотношения между результатами разных вызовов — ну, кроме того, что результат одного можно подставить в другой.
Рояль из куста всегда вызывает фейспалм. Есть такой рефлекс. Но никакого описания не будет достаточно если разработчика выставлять идиотом. А у меня ощущение, что ты своих клиентов тамими и выставляешь. И поменять-то они ничего не могут, не раззорив компанию и закладываются на странные вещи, и говорить отказываются, и даже API посмотреть не могут, перед использованием.
S>Я думаю, на этом мы закончим беседу в связи с утратой конструктивности.
Ты обиделся что ли? Прости, не хотел.
Конструктивности тут не было изначально, никто никого не просил помочь и нет общей задачи.