Rules Hub
Coding Rules Library
Rule priority, scope & exceptions
Use this to align rules with the senior-level structure (P0/P1/P2, scope, exceptions/tradeoffs).
Do not wrap synchronous work in fake async helpers
Avoid Promise.resolve, Promise.all, or async function signatures when the underlying work is synchronous.
Bad example
| 1 | const setPreloadedStockTransactions = useCallback(async (payload: Payload) => { |
| 2 | setRows(payload.data); |
| 3 | }, []); |
| 4 |
|
| 5 | await Promise.all([ |
| 6 | setPreloadedStockTransactions(payload.transactions), |
| 7 | Promise.resolve(setPreloadedCashTransactions(payload.cash)), |
| 8 | setPreloadedDividendTransactions(payload.dividends) |
| 9 | ]); |
Explanation (EN)
The code pretends there is asynchronous coordination, but the setters are synchronous. That makes control flow harder to read and review.
Objašnjenje (HR)
Kod se pretvara da postoji asinkrona koordinacija, ali su setteri sinkroni. To otezava citanje i review toka izvrsavanja.
Good example
| 1 | const setPreloadedStockTransactions = useCallback((payload: Payload) => { |
| 2 | setRows(payload.data); |
| 3 | }, []); |
| 4 |
|
| 5 | setPreloadedStockTransactions(payload.transactions); |
| 6 | setPreloadedCashTransactions(payload.cash); |
| 7 | setPreloadedDividendTransactions(payload.dividends); |
Explanation (EN)
Synchronous work stays synchronous. The control flow is simpler and future readers do not have to reverse engineer fake promise semantics.
Objašnjenje (HR)
Sinkroni posao ostaje sinkron. Tok izvrsavanja je jednostavniji i buduci citatelji ne moraju raspetljavati laznu promise semantiku.
Exceptions / Tradeoffs (EN)
Use Promise.all only when every entry is genuinely asynchronous and concurrency is desired.
Iznimke / Tradeoffi (HR)
Koristi Promise.all samo kada je svaki element stvarno asinkron i kada zelimo konkurentno izvrsavanje.