\documentclass[10pt]{article}
\usepackage[default]{opensans}
\usepackage[T1]{fontenc}
\usepackage{xifthen}
\newcommand{\cvAnrede}{Herr}
\newcommand{\cvTitel}{Dr.}
\newcommand{\cvVorname}{Max}
\newcommand{\cvNachname}{Mustermann}
\newcommand{\cvSetTitel}[1]
{
\ifthenelse{\equal{#1}{}}{}{\cvTitel}
}
\newcommand{\setName}[1]
{
\ifthenelse{\equal{#1}{nachname}}{\cvAnrede{} \cvSetTitel{\cvTitel} \cvNachname }{\cvVorname }
}
\newcommand{\setCompleteName}[1]
{
\ifthenelse{\equal{#1}{nachname}}{\cvSetTitel{\cvTitel} \cvVorname \cvNachname }{\cvVorname}
}
\newcommand{\cvName}{\setName{\cvSetName}}
\newcommand{\cvFullName}{\setCompleteName{\cvSetName}}
\begin{document}
\ifdefined\cvSetName
\else
\def\cvSetName{nachname}
\fi
\cvName \\
Herr Dr. Mustermann
\end{document}
Output:
What is my mistake? I don't understand why 1. there are spacing and 2. there are different spacing.

