# Chatterino pedantic extra guidelines
These guidelines are more specialized and are not included in the main document is spirit of keeping it short and easy to read.
Pure functions are easy to reason about since they produce the same output every time they get the same input and don't produce side effects.
class FilterView : public QWidget
// constructor, etc...
void setFiltered(const std::vector<Item> &items);
std::vector<Item> filterItems(const std::vector<Item> &items)
// Insert complicated filter function here.
} // namespace
void FilterView::setFiltered(const std::vector<Item> &items)
// Now we don't have to reason if `setFiltered` has any side effects!
// We can also reuse `filterItems` later easily.
this->items_ = filterItems(items);