About to gut my use of the Resources folder. What are the best practices going forward?

I have been using the Resources folder a lot. I have recently been informed that this is considered a very bad and dangerous thing to use for bigger projects. I dug in a little and found some evidence supporting this opinion: Assets, Resources and AssetBundles - Unity Learn

Current approach:

An enemy spawner triggers a new enemy spawn. The spawner calls Resources.Load() on the appropriate enemy prefab, initializes it, and kicks it off into the world.

Best-practice approach(?):

An enemy spawner has a reference to all enemy type prefabs as public variables on the script. When an enemy spawn is triggered, the spawner just initializes the prefab that is a public variable on it.

Am I understanding this properly? Is there any documentation that goes over the best practices here when looking for alternatives to the Resources folder?

First and foremost, if you are instantiating a lot of game objects from prefabs, use pools.

By using pools, you’ll have no need for Resources folder.

Here’s a great starting point: Object Pooling - Unity Learn

I’m using PoolManager from path-o-logical games and after I instantiate my prefab, I can change anything on it by accessing components and scripts. Though any pooling system will work similarly, so you don’t have to purchase an asset for it.