Sorry misinterpreted your question. There is several approaches, I prefer box modeling (old school), where you extrude faces in or out. This produces the cleanest geometry, no intersecting, no open edges, very easy UV unwrapping, etc. Need more faces to get finer detail, subdivide the select faces, extrude or angle extrude. Learning this also helps immensely, with character modeling, because it produces quads and “loops” around joints. Might be tedious to start out but becomes very easy once the fundamentals are learned. (side note: try to stay away from Booleans, very messy geometry)
I just recently completed modeling an elaborate Victorian house, originally someone else’s created asset, but as I looked their model over I decided to use it as a blueprint and totally redo it. End result, no open geometry, clean UVs and a reduction of polys from 105k to 43k (more than half) losing no detail what so ever. I then made polygroups of the major components, with sub object components, which helps when I pull it into Substance painter (helps with focusing on one object and masking).
I work in Max, but those principles work in any modeling package. Learning curve, but in the end, clean geometry will save you lots of heartache in the end. Another approach is removing faces and welding the verts of combined geometry, again no intersections and clean geometry. Optimizing in this manner will produce less calls to the engine. I went to school for Max 15 years ago, so my way might not be the latest, but it works. Hope I helped in some way.