Accessor functions in elisp
Yes, it can be shortened by using defstruct. An example from the docs:

      (cl-defstruct person name age sex)
      (setq dave (make-person :name "Dave" :sex 'male))
           ⇒ [cl-struct-person "Dave" nil male]
      (setq other (copy-person dave))
           ⇒ [cl-struct-person "Dave" nil male]
      (eq dave other)
           ⇒ nil
      (eq (person-name dave) (person-name other))
           ⇒ t
      (person-p dave)
           ⇒ t
      (person-p [1 2 3 4])
           ⇒ nil
      (person-p "Bogus")
           ⇒ nil
      (person-p '[cl-struct-person counterfeit person object])
           ⇒ t


Alternatively, if you want something more heavy weight, there is a CLOS-like object system.