Dies ist vielleicht ein eher kosmetisches Problem, aber ich finde es wirklich ärgerlich, da ich immer mit hässlichem Code enden. Und Lesbarkeit ist immer wichtig, nicht wahr?
Ich möchte überprüfen, ob ein Wert in einem Hash innerhalb eines Hashs existiert. Also mache ich das hier.
already_exists_data[:data][:user_id]
Aber das kann eine Nullpointer-Ausnahme auslösen, wenn :data nil ist, und das Überprüfen von :data könnte eine Nullpointer-Ausnahme auslösen, wenn already_exists_data nil ist. Also lande ich am Ende damit:
if already_exists_data && already_exists_data[:data] && already_exists_data[:data][:user_id]
# Mach etwas
end
Das ist jetzt ziemlich unschöner Code. Vielleicht sollte ich den Hash in ein Objekt ändern. Aber manchmal stoße ich auf dieses Problem und frage mich, wie ihr damit umgeht.
Ich programmiere derzeit in Ruby, hatte aber dieses Problem auch bei mehreren anderen Sprachen.