There are a number of ways to approach this problem. To begin with, you can choose to use materials for everything (totally viable), to use textures for everything (also totally viable), but I think the best option is to use a mixture of both.
Often, the best approach is to use materials for anything that can all be the same, and use textures for anything that needs to be placed carefully (like a label or logo).
In your case, I'd recommend that you join
all the parts that will be the same material into the same object (like all the individual components that make up the slide, for example). All of those meshes don't have to necessarily be connected to each other, they'll just be in the same object. Then you can give the object one material that looks like anodized steel (or whatever). I suspect you'll have an object for the slide, another for the grip and lower receiver, another for the magazine butt, another for the magazine itself, another for the extractor, another for each of the controls (safe selector, magazine release, slide lock/release), and a few others. Note that meshes can be in the same object even if they're not close to each other. For example, the magazine release and the safety might be in the same object, if they're supposed to be the same material. That way you can set up the material for both at the same time.
Once you've done that, determine if there are any parts that should be textures. If you're going to be adding the manufacturer's mark, that's probably a good candidate. You also might find it easier to make the nerling on the grip as a normal map than try to model it.
Those are some basic ideas that will get you a little closer, but beyond that we're getting into making a tutorial, which is outside the scope of this website ;-) I wish you the best of luck, and do remember to check back here when you have specific, answerable questions. Happy Blending!