// Hard to read
result := sync.NewComputed(func() Report {
items := items.Get()
filtered := filterItems(items, filter.Get())
sorted := sortItems(filtered, sortBy.Get())
paginated := paginateItems(sorted, page.Get(), pageSize.Get())
return buildReport(paginated)
})
// Better: intermediate computations
filteredItems := sync.NewComputed(func() []Item {
return filterItems(items.Get(), filter.Get())
})
sortedItems := sync.NewComputed(func() []Item {
return sortItems(filteredItems.Get(), sortBy.Get())
})
paginatedItems := sync.NewComputed(func() []Item {
return paginateItems(sortedItems.Get(), page.Get(), pageSize.Get())
})
report := sync.NewComputed(func() Report {
return buildReport(paginatedItems.Get())
})