Post TF13 ARM20 best practices - Inferred vs Declarative dependency

I am using Terraform 0.13 and the azurerm 2.24.0.
As a developer, I am somewhere between Reagan and Molder.

  • Trust, but verify
  • Trust no one

Inferred Dependency
Been burnt by VB and TF numerous times when the inferred dependency (truth) was guessed wrong, not exactly what I had in mind.

resource "azurerm_resource_group" "main" {
  name     = var.rg_name
  location = var.location
}

resource "azurerm_network_interface" "main" {
  name                = "nic"
  location            = var.location
  resource_group_name = azurerm_resource_group.main.name
  . . .
}

Declarative Dependency
That is why I prefer to declare, instruct the compiler/interpreter what I want, instead of something/someone is trying to infer/guess what I might have meant.

resource "azurerm_resource_group" "main" {
  name     = var.rg_name
  location = var.location
}

resource "azurerm_network_interface" "main" {
  name                = "nic"
  location            = var.location
  resource_group_name = var.rg_name
  . . .
  
  depends_on = [azurerm_resource_group.main]
}

What is the post TF13 ARM20 best practices regarding dependency for resources and modules, please?
I’d love to hear your thoughts.