Поэтому - гвардов вполне достаточно, хоть и таких мудреных с if-фами.
Если тебе нравится лапша в коде, то кто ж тебе помешает? :D
Добавлено JoeUser, еще я понял, что есть разница в восприятии у нас. Ты как будто весь код целиком смотришь. Потому для тебя и нет разницы, где ресурс будет освобожден, в коде функции load или в отдельном объекте-владельце, даже второй случай кажется тебе более сложным. Я же предпочитаю декомпозировать. И мне важнее, что код load более простой и чистый, не замылен лапшой с очисткой ресурсов.