Eines der Probleme wäre, dass in vielen Fällen der Schlüssel für die Hash-Tabelle eine Zeichenfolge ist. Die Verbraucher der Methode müssten also vorher wissen, welche Schlüssel zum Extrahieren der Daten verwendet werden sollen. Dies würde zu Fehlern aufgrund von Rechtschreibfehlern beim Zugriff auf die Daten führen.
Ein weiterer Nachteil ist die Refaktorierbarkeit. Wenn Sie sich später entscheiden, den Namen eines Mitglieds zu ändern, haben Sie eine Reihe magischer Zeichenfolgen, die ebenfalls geändert werden müssen. Es ist viel einfacher, ein Klassenmitglied mit Refactoring-Tools umzubenennen, die von den meisten guten IDEs bereitgestellt werden. Mit einer Hash-Tabelle müssten Sie wahrscheinlich einen Such- / Ersetzungsvorgang für alle Quelldateien durchführen, was problematisch sein könnte.
Schließlich verlieren Sie die Kompilierungszeit für die Überprüfung des Mitgliederzugriffs - sowohl hinsichtlich des Namens als auch des Typs. Letzteres ist kein solches Problem, wenn Ihre Hash-Tabelle nur einen Objekttyp enthält, aber wenn sie viele enthält (auch in derselben Hierarchiekette), möchten Sie das Typensystem Ihrer Sprache wirklich nutzen und dort die Kompilierungszeit überprüfen lassen. In den meisten IDEs gibt es eine Art Intellisense- / Autocomplete-Funktionen - diese funktionieren anhand des Typsystems, können Ihnen jedoch bei der Verwendung von Hash-Tabellenschlüsseln nicht helfen.
In Zeiten, in denen es angebracht wäre , eine Hash-Tabelle (oder eine andere solche Sammlung von Schlüsselwertpaaren) zurückzugeben, würden Sie dies verwenden, wenn sowohl die Werte als auch die Schlüssel zur Kompilierungszeit nicht bekannt sind. Wenn Sie beispielsweise eine Methode haben, die eine Abfragezeichenfolge analysiert und die Schlüssel und entsprechenden Werte zurückgibt, ist eine Hash-Tabelle eine gute Wahl. In diesem Fall möchten Sie auch darüber nachdenken, eine unveränderliche oder schreibgeschützte Hash-Tabelle zurückzugeben.
Bearbeiten - Die meisten Punkte in dieser Antwort gelten nicht mehr, wenn Sie über dynamische Sprachen sprechen :)