I would recommend `implicit val BarOrdering: Ordering[Bar] = new { ... }` here.

Why? There is an ugly wrinkle in the compiler: Implicit objects are not valid for implicit searches higher in the same file, as they don't (and can't) have an explicit return type. Implicit val/def's can be given a type ascription to avoid this pitfall.