Here are a couple of suggestions.
For the first command \stackrel causes the whole construction to be centered vertically, meaning that the D does not sit on the baseline. Instead you can use \overset from the amsmath package. Instead of switching to text mode for the emdash, you can use a LaTeX \rule:
\rule[0.3ex]{1em}{0.4pt}
produces a rule 1em long (like an emdash), with the standard line thickness of 0.4pt but raised 0.3ex. Putting your bracketed expression in a \smash statement allows it to be lowered a bit closer to the D.
For the second command, no you do not need the \hbox maneuvers, just {}_s will do to produce the lowered s. I'd don't like the mixed fonts for the word plot, but if you insist on this then write the last part as \mathit{lot} to get no math kerning, and then move it closer to the P with a negative kern.

\documentclass{article}
\usepackage{xspace,amsmath}
\newcommand*{\DDbar}{\ensuremath{\overset{\smash[b]{(\rule[0.3ex]{1em}{0.4pt})}}D}\xspace}
\newcommand*{\sPlot}{\ensuremath{{}_s{\mathcal P}\mkern-2mu\mathit{lot}}\xspace}
\begin{document}
Text \DDbar text \sPlot.
\end{document}
By the way I am not a fan of the \ensuremath...\xspace combinations, I would prefer to just define math mode commands \DDbar etc. and then write \( \DDbar \) if I need somewhere in text. I have also used \newcommand* instead of \def as egreg pointed out: \newcommand is a LaTeX user level command and will alert you if the command is already defined, see What is the difference between \def and \newcommand? and What's the difference between \newcommand and \newcommand*?.