One large object or many small objects

I’m making a ship, but also trying to improve my modelling skills such as joining objects together. Guess I’m curious if me joining all the parts of the ship together into one mesh is good or bad work practice?

I’m using a subserf by the way.

I usually stick with separate objects, especially for something large. It’s far less confusing to, for instance, work on deck five bulkheads when they aren’t attached to the hull (or deck four bulkheads, not to mention the flying bridge if you have one). Even the hull itself, depending on the ship design, may be easier to work on if it’s broken up into sections. A catamaran could be built with two separate hulls with a deck spanning both for a total of three objects… as long as the three separate objects are placed close enough to each other so the space between doesn’t show.

In fact, for a catamaran, you could build just one hull and use an array to duplicate it so any changes you make along the way only have to be done once to show up in both.

Oh, and the Bevel modifier can be your best friend.

What I find a good approach, is DRY (dont repeat yourself). Array modifier, Mirror modifier, re-using meshes, using group instances, lots of ways to do it.
For a ship I would say use one shape for the main hull, and then separate shapes for everything that is not directly subsurfed- to it. Decks, railings, handles, wheels, etc.
And for the wheels and handles and rings and whatevers as soon as you have two or more of the same shape, use one of the tricks mentioned above to make sure you only need to modify one mesh.