servus!
die erste abfrage könnte direkt in archivement.unlock() wandern, sodass sich der aufrufer nicht darum kümmern muss, ob irgendwas gelocked ist, oder nicht. dieses muster findet man oft in diversen büchern, tutorials, talks und papers zu gutem software design.
meiner meinung nach darf das aber nicht zur glaubensfrage mutieren ... man muss einfach ein gespür dafür entwickeln, wann etwas sinnvoll ist, und wann nicht.
dein zweites beispiel sieht man ob bei sprachen, die eine art von null kennen (z. B. nullptr in C++, None in Python, Nil in Pascal, usw.). dabei wird oft empfohlen, grundsätzlich auf nullzeiger zu verzichten. stattdessen nimmt man dann oft statische dummy-objekte. das hat den vorteil, dass man nirgendwo mehr auf null prüfen muss.
also ja, beide deiner beispiele kann man als indiz für schlechten code sehen, aber das hängt seeeeehhhr vom kontext bzw. dem gesamten quelltext ab, und so pauschal kann man beide codeschnipsel nicht per se als schlecht bezeichnen.