factory-function-composition
Apply factory function patterns to compose clients and services with proper separation of concerns. Use when creating functions that depend on external clients, wrapping resources with domain-specific methods, or refactoring code that mixes client/service/method options together.
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Apply factory function patterns to compose clients and services with proper separation of concerns. Use when creating functions that depend on external clients, wrapping resources with domain-specific methods, or refactoring code that mixes client/service/method options together.
How to use
Zidentyfikuj funkcję, która przyjmuje klienta lub zasób jako pierwszy argument i mieszane opcje z różnych warstw (klient, serwis, metoda). To jest kandydat do refaktoryzacji wzorcem factory function.
Zdefiniuj funkcję factory z uniwersalną sygnaturą: pierwszy parametr to zależności (pojedynczy klient lub destructured obiekt z wieloma zależnościami), drugi to opcjonalne opcje konfiguracyjne specyficzne dla factory. Nigdy nie umieszczaj konfiguracji klienta w drugim argumencie — ta należy do tworzenia klienta.
Wewnątrz factory zwróć obiekt zawierający metody, które będą używać zasobów i opcji. Każda metoda może przyjąć swoje własne opcje (methodOptions), które są specificzne dla konkretnego wywołania.
Utwórz klienta poza factory (z jego własnymi opcjami), a następnie przekaż go do factory function jako pierwszy argument. To rozdziela odpowiedzialność: tworzenie klienta jest osobne od logiki serwisu.
Używaj zwróconego obiektu z metodami w swoim kodzie. Każda metoda ma dostęp do klienta, opcji factory i swoich własnych opcji, co ułatwia testowanie i zmniejsza złożoność sygnatury funkcji.
Jeśli masz wiele zależności, destructuruj je w pierwszym argumencie zamiast przekazywać je jako osobne parametry. To utrzymuje sygnaturę czystą i czytelną.