Bear in mind that symbols, functions, and classes contribute significantly to the size of a delivered application. While it is not worth letting this interfere greatly with good design and maintainability, efforts to minimize their use in your application may pay off.
Note: Symbols, functions and classes interact. If a symbol is retained, any function or class bound to it is also retained in the delivered application, even if it is never funcalled or instantiated. Delivery cannot be sure that the symbol is not ever used to do these things, and so errs on the side of safety, at the expense of image size.