One of the great things about life is that the techniques you learn in one situation often transfer well to another scenario years down the road. The time you spend in an organized sport, for example, might teach you all kinds of lessons about focus and persistence that'll lead you to success in college or at work. Unfortunately, in the kitchen, sometimes the opposite is true. Consider marinating, for example. It's a great technique that can add flavor to a lot of foods, so you might be in the habit of tossing a steak in the fridge to marinate overnight. That's fine for beef, but fish is pretty delicate so you wouldn't want to use the same marinating method on it.
Don't Do It. Really.
Most marinades are made up of an oil, an acidic ingredient – usually vinegar, lemon juice or other fruit juice, or maybe wine – and whatever flavoring ingredients make sense for the overall recipe. Each of these serves a purpose. The flavorings, of course, give you the taste you're looking for. Oil protects the fish from drying out while it marinates and then cooks, and it helps transfer fat-soluble flavor molecules from your herbs and spices to the surface of the fish. The acidic ingredient brightens the other flavors and transfers any water-soluble flavor molecules to the surface of the fish.
The problem is that acidity can "cook" the fish if it's left on overnight, which utterly changes its texture. Have you ever had ceviche? That's how it's made, with an acidic marinade. So it's not that fish can't benefit from a marinade, just that you can't throw together a conventional marinade and leave the fish to sit in it overnight. With that kind of marinade, 30 to 60 minutes is more than enough, depending on whether your pieces of fish are thick or thin.
Go Dry Instead
If you want the convenience of preparing your fish in advance and leaving it overnight in the fridge, you're better off with a dry rub than a wet, acidic marinade. Seasoning the fish ahead of time gives it plenty of time for the flavors to get into the surface of the fish, which is naturally filled with little nooks and crannies. Most flavorings won't penetrate beyond the surface anyway, but having them well rubbed into the surface is the next best thing. Salt is an exception to the not-penetrating rule. It will absorb into the fish's cell walls overnight, so your fillet will taste well-seasoned all the way through.
Marinate by Installments
Another option is to prepare your marinade, but leave out the acidic ingredient. Your fish can sit overnight in the oil and other flavorings without any harm, and – as with the dry rub – the flavors will have time to seep into all the irregularities in the fish's flesh. When it's time to make dinner, take the fish out and add the acidic ingredient to the marinade. Turn the pieces of fish a few times to make sure they're evenly exposed to the juice or vinegar and then cook it as you normally would.
Brush On the Marinade
You may be thinking to yourself, "Wait a minute ... if the marinade doesn't really penetrate into the fish anyway, why couldn't I just brush it on at the last minute?" That's an excellent question, and it's actually an equally excellent technique. The beauty of a liquid marinade is that it gets right into the surface of the fish, so you don't need to leave it in the marinade the way you would with a piece of meat. You'll need a lot less marinade, and it's so quick and easy that you won't miss the convenience of marinating overnight.
If you truly want to break with tradition, consider brushing your fish with a marinade after it's cooked instead of before. That way there's absolutely no question that the flavors will stay on the portions or that the fish's texture will be affected by the marinade. Basically, you're treating the marinade as a sauce.