February 24th 2006 #
random, February 24th 2006
FOO-OF!
Everyone has their own style of naming accessors, but here's a meme I've occasionally tried to spread:
(defclass bar () ((foo :accessor foo-of)))
This works like a charm, and with good reason. You are highly unlikely to ever want to name a function with arity other then 1 with the postfix -OF. It just doesn't make sense. In this way this style is superior to plain FOO, and to a lesser extent better then GET-FOO and friends.
If you are partial to BAR-FOO, then you are beyond help. The problems with this approach in conjuction with subclassing are amply documented, so nuff said.
If your objection is purely aesthetic then I can only assure you that the eye gets used to it. CLASS-OF and TYPE-OF provide sufficient precendent to my satisfaction.
If you find yourself needing either of the above as accessors, this is what shadowing and generic functions are there for!
(defpackage "EXAMPLE" (:use "COMMON-LISP") (:shadow "TYPE-OF")) (in-package "EXAMPLE") (defgeneric type-of (instance) (:method (instance) (cl:type-of instance)))
Done.