¿Es esta la mejor manera de definir nuevos comandos de preámbulo y reestructurar los ya definidos?

¿Es esta la mejor manera de definir nuevos comandos de preámbulo y reestructurar los ya definidos?

Tengo una clase de látex que amplía la clase de artículo AMS amsart. Ajusté los márgenes y quería agregar algunos nuevos parámetros de estilo de preámbulo como \author{Name}, por ejemplo \class{Algebra},. Después de hacerlo, quería que el nombre del autor, la clase, la fecha y el título aparecieran así cuando \maketitlese llamara. Tenga en cuenta que en caso de que no se proporcione uno de estos, quiero que eso resulte en la falta de ese campo ynoun choque. Por ejemplo, si el preámbulo no lo incluye, \class{...}entonces en el documento solo debe aparecer el nombre del estudiante y la fecha. Si no se proporciona el nombre del estudiante, el nombre de la clase ni la fecha, el documento debe comenzar con un título centrado.

Student Name
Algebra
Decembruary 3, 1947
                                Centred Title
                                       .
                                       .
                                       .

Esto es lo que preparé,

% this handles the info tags at the beginning
\makeatletter
   % defining new variables
   \gdef\@class{\empty}
   \def\author#1{\gdef\@author{#1\\}}
   \def\class#1{\gdef\@class{#1\\}}
    \renewcommand{\maketitle} {
      \bgroup
        \setlength{\parindent}{0em}
          \begin{flushleft}
            \ifx\@author\empty \else \@author\fi
            \ifx\@class\empty \else \@class\fi
            \@date
          \end{flushleft}
      \egroup
      \begin{center}
        \textbf{\@title} \\
      \end{center}
      \bigskip
    }
\makeatother

Honestamente, no tengo idea de cómo o por qué funciona este código porque comencé con algo y procedí con prueba y error hasta que algo funcionó. Por eso tengo motivos para creer que esta podría no ser la forma más limpia ni la mejor de lograr lo que quiero. ¿Podría alguien que realmente entienda la programación en látex echar un vistazo y tal vez decirme cómo podría escribir esto mejor o si lo que tengo es lo suficientemente bueno?

información relacionada