Die erste Verbesserung könnte dann ja sein, in dem Fields array wirklich nur die Felder mit eigenem Standardwert festzuhalten und "allen anderen" den Default-Wert zuzuweisen. Im Beispiel müsstest Du dann nur noch "name" und "key" im Array haben.
Viele Grüße