Static function in companion vs in a file

Top-level functions are more accessible: they are added to a package instead of a class. (private are added to the file)

Therefor, if you want a function to be very accible, it need to be a top-level function.
This is the case if you would normally put it in an utility-class.

If you on the other hand don’t want the function to show up every time you press autocomplete, use companion-object. This is also for functions that must belong to the class, like create() or buildFrom(), because they are senseless if you call them without class.

This is just the way i use them

See also