Не учитывать вложенные функции
function f() {
console.log(g());
function g() {
return 1;
}
}
А дальше маски пользователь не уйдет.это весьма наивно...
Можете уточнить, что вы подразумеваете под внешним и публичным API? API, предназначенное для клиентов, а не межсервисного взаимодействия?Да, это API предоставляемое третьим лицам, деятельность которых лежит за пределами моей компании/домена/другого бизнес-юнита. REST или GraphQL тут выигрывают по 2 параметрам:
Когда голый CRUD ходит между частями одного целого (например между клиентским приложением и сервером, или между двумя микросервисами), это говорит сразу о многих болячках:Они ограничивают Вас в низкоуровневом CRUD, создавая больше проблем, чем решают
Если не затруднит, могли бы привести пример? Кажется, речь о том, что CRUD у́же предметной области и последнюю приходится подгонять под этот самый CRUD.
Но ведь мутации в GQL +- тоже самое, что описание методов в RPC, разве нет? Можно описать метод с любым названием, отражающим суть use-case, который принимает определенный набор параметров и что-то возвращает.Нет. При мутации в GraphQL вся бизнес логика сосредоточена в запросе, а сервер должен обработать любой такой запрос - что-то поменять у себя (ну или в 10 базах под собой, и бизнес хочет консистентно... боль...)
В основе лежит глава 20 из книги Роберт Мартин "Чистая архитектура", плюс статья одного блогера, которую я прочел несколько лет назад, ссылку сейчас затруднюсь дать, но идея в том, что любое взаимодействие между частями системы (в том числе сетевое) можно свести к вызову метода (Action) у экземпляра класса (Entity), а нужный экземпляр всегда можно найти по ссылке или id (Target), но Target опционален, так как бывают статичные методы. Если описать это на псевдо языке, будет что-то вроде такого:а так же мой любимый, но почему-то малоизвестный в русскоязычном интернете E/A/?T
Что-то ничего адекватного по запросу
rpc entity action target
не смог найти. Буду благодарен, если поделитесь ссылками на материал.
interface Entity {
// Action без Target
public static ResultType action(DataType data);
// получение Entity по Target
public static Entity getEntity(IDType target);
// Action с Target
public ResultType action(DataType data);
}
Для асимптотики основание роли не играет.
правильно ли я понимаю, что в "минус" уйти нельзя?
со значениями вьюпорта такие же правила?Нет, вьюпорт - это непосредственно область отрисовки страницы, на размеры которой может влиять только пользователь браузера, но не мы из кода. Яркий пример - на большинстве страниц есть скролл из-за того что элемент body не помещается во вьюпорт.
Editor: Font Family
на лаконичный вариант с оператором ||=
??=
тут будет уместнее
А вот дай мне решение с обработкой кода на строках, я бы лично резюмировал так: "не использовал инженерного мышления, решил задачу в лоб, не проверил крайние случаи". И да, какое бы решение Вы не написали, работающее на строках - я найду пример кода, на котором оно отработает некорректно.