Die Makros
\newbibmacro*{usera}{%
\iffieldundef{usera}%
{}
{\printfield[]{usera}}}
\newbibmacro*{userb}{%
\iffieldundef{userb}%
{}
{\printfield[]{userb}}}
kann man zu
\newbibmacro*{usera}{%
\printfield{usera}}
\newbibmacro*{userb}{%
\printfield{userb}}
vereinfachen. \printfield ist von sich aus schlau genug, nichts zu tun, wenn das Feld leer ist. Daher ist es nie notwendig, ein einfaches \printfield{<feld>} mit \iffieldundef{<feld>} zu schützen. (Wenn gewisse Formatierung nicht von \setunit und \printfield kommt, kann es aber sehr wohl sinnvoll sein, \iffieldundef zu nutzen. Oder wenn mehrere Felder ausgegeben werden sollen. Es gibt also durchaus viele gute Anwendungen für \iffieldundef, nur dieses Idiom hier gehört nicht dazu.)
Es ist übrigens nicht zwingend notwendig, ein Bibmakro zu definieren, um etwas in dem driver asuzugeben. Du kannst \printfield auch direkt reinschreiben. Ich finde es sinnvoll, zusammengehörige "Blöcke" zu einem Bibmakro zusammenzufassen, da käme man dann eher bei
\newbibmacro*{patent:inst+loc}{%
\printfield{userb}%
\setunit*{\addcolon\space}%
\printfield{usera}%
}
raus, das man dann im driver einsetzen kann.
In der Eingabe etwas schöner ist es natürlich, wenn man statt der nichtssagenden Namen usera und userb sprechende Namen verwenden kann. Das kann am schönsten dadurch erreichen, dass man die neuen Felder bei biblatex mit einem data model anmeldet. Das ist aber auch etwas Aufwand. Man kann aber auch sprechende Namen mit einer Sourcemap zu usera und userb abbilden lassen. Dann nutzt Du beim Programmieren der Ausgabe usera und userb und musst die neuen Felder nicht groß anmelden, kannst in der Eingabe aber dennoch die sprechenden Namen nutzen. Ein paar Details dazu findet sich bei https://tex.stackexchange.com/q/163303/35864.
Beim TeX-Programmieren solltest Du immer im Hinterkopf behalten, dass das Zeilenende im Code wie ein Leerzeichen gelesen wird. Das bedeutet, dass man in einigen Kontexten ein % hinter das letzte Zeichen der Zeile schreiben muss, um ein Leerzeichen in der Ausgabe zu verhindern.
Vergleiche
und
Das ist insbesondere bei im Kontext von biblatex wichtig, da Du dort Leerzeichen nicht einfach so einfügen solltest. Stattdessen sollte man dafür field formats (\DeclareFieldFormat) oder den punctuation buffer (\setunit) verwenden.
Daher sollte
\printfield{usera}
\newunit\newblock
\usebibmacro{finentry}
}
eigentlich
\printfield{usera}%
\newunit\newblock
\usebibmacro{finentry}%
}
sein, um keine ungewollten Leerzeichen und Leerzeilen zu erzeugen. (Es ist durchaus möglich, dass Du nach dieser Anpassung keine Änderung in der Ausgabe siehst, das hat damit zu tun, dass einige dieser Dinge Kontextabhängig sind und dass biblatex so gut wie möglich versucht, ungewollte Leerzeichen zu unterdrücken. Darauf kann man sich aber nicht in allen Lagen verlassen, daher sollte man von vornherein so programmieren, dass keine ungewollten Leerzeichen impliziert sind). Mehr zu % bei TeX.SX: https://tex.stackexchange.com/q/7453/35864
Wie bereits angesprochen, sollte Zeichensetzung in biblatex nie einfach so in einem driver oder Bibmakro erfolgen. Ein nacktes \addspace direkt im driver ist selten eine gute Idee. Stattdessen sollte man den punctuation buffer und \setunit verwenden. Warum das sinnvoll ist, habe ich in https://tex.stackexchange.com/q/409148/35864 erklärt. Zeichensetzung kann auch innerhalb von field formats (nicht aber zu Beginn oder am Ende!) zum Einsatz kommen.
So wäre z.B.
\printfield{userb}
\addcolon\addspace
\printfield{usera}
durch
\printfield{userb}%
\setunit*{\addcolon\space}%
\printfield{usera}%
zu ersetzen. Ich habe hier \setunit* statt \setunit* genommen. Warum kannst Du sehen, wenn Du Dir einen Eintrag mit userb und einen ohne userb (beide sollten usera haben) vergleichst. Was \setunit* macht, ist in dem Link von eben erklärt (es fügt die Zeichensetzung nur in den buffer ein, wenn der vorherige Befehl etwas ausgegeben hat).
Text wie "Patent Nr." sollte man idealerweise nicht hard-codieren sondern mit bibliography strings erledeigen lassen. Ferner ist es hier schöner, die Ausgabe durch ein field format erledigen zu lassen.
Dazu definiert man zunächst
\NewBibliographyString{patentnr}
\DefineBibliographyStrings{german}{
patentnr = {Patent Nr\adddot},
}
\DeclareFieldFormat[patent]{number}{\bibstring{patentnr}\addspace#1}
und ersetzt dann
\printlist{location}%
\addspace
\printtext{Patent Nr.}%
\addspace
\printfield{number}
\newunit\newblock
durch
\printlist{location}%
\setunit*{addspace}%
\printfield{number}%
\newunit\newblock
In der Tat ist die Sourcemap jetzt nicht mehr nötig, da Du die Ausgabe des Titels durch Änderung des drivers schon selbst erledigt hast.
Du kannst Deinen biblatex-Code wie jeden anderen Präambelcode auch auslagern. Wenn der Code komplex genug ist, kannst Du aber auch einen eigenen biblatex-Stil erstellen. Mehr dazu bei https://tex.stackexchange.com/q/296732/35864