Toolverse
All skills

factory-function-composition

by EpicenterHQ

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

Quick info

Category
Security
Views
2

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. Jeśli masz wiele zależności, destructuruj je w pierwszym argumencie zamiast przekazywać je jako osobne parametry. To utrzymuje sygnaturę czystą i czytelną.

Related skills