JAVA_IIBRARY Telegram 1758
Если бы ты разрабатывал API, как бы ты дал клиентам выбор между синхронными и асинхронными вызовами, не дублируя одну и ту же логику дважды?

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

Более умный подход заключается в том, чтобы один раз спроектировать основную логику и дать клиентам самим выбрать, как её использовать. Самый простой паттерн заключается в том, чтобы сделать асинхронную версию основным методом. Она может возвращать CompletableFuture или реактивный тип вроде Mono в Spring. Клиенты, которым нужен асинхронный вызов, используют его напрямую. Клиенты, которым нужен синхронный вариант, просто вызывают .join() или .get().

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

👉 Золотое правило здесь -> логику пишем один раз, используем её двумя способами.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍133



tgoop.com/Java_Iibrary/1758
Create:
Last Update:

Если бы ты разрабатывал API, как бы ты дал клиентам выбор между синхронными и асинхронными вызовами, не дублируя одну и ту же логику дважды?

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

Более умный подход заключается в том, чтобы один раз спроектировать основную логику и дать клиентам самим выбрать, как её использовать. Самый простой паттерн заключается в том, чтобы сделать асинхронную версию основным методом. Она может возвращать CompletableFuture или реактивный тип вроде Mono в Spring. Клиенты, которым нужен асинхронный вызов, используют его напрямую. Клиенты, которым нужен синхронный вариант, просто вызывают .join() или .get().

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

👉 Золотое правило здесь -> логику пишем один раз, используем её двумя способами.

👉 Java Portal

BY Java Portal | Программирование




Share with your friend now:
tgoop.com/Java_Iibrary/1758

View MORE
Open in Telegram


Telegram News

Date: |

Telegram channels enable users to broadcast messages to multiple users simultaneously. Like on social media, users need to subscribe to your channel to get access to your content published by one or more administrators. Telegram iOS app: In the “Chats” tab, click the new message icon in the right upper corner. Select “New Channel.” Clear Public channels are public to the internet, regardless of whether or not they are subscribed. A public channel is displayed in search results and has a short address (link). As of Thursday, the SUCK Channel had 34,146 subscribers, with only one message dated August 28, 2020. It was an announcement stating that police had removed all posts on the channel because its content “contravenes the laws of Hong Kong.”
from us


Telegram Java Portal | Программирование
FROM American