The care and use of a gun (especially in combat, in close quarters and urban environments) adds multiple layers of complexity.
I would rely on multiple layers of complexity for defense, since that's how modern security design works. A gun is a single point of failure. A shelter or person full of extremely undesirable defenses is more reliable, less dangerous, and probably much easier to stock.