`tfvars` files should not be gitignore-d as they are used to parameterize a Terraform root for multiple environments, e.g.:
```bash
$ tree terraform/roots/vpc
terraform/roots/vpc
├── env
│ ├── production.tfvars
│ ├── qa.tfvars
│ └── staging.tfvars
└── main.tf
```
There may be a use case where a particular `tfvars` file should be ignored, but there's no naming convention I'm aware of to easily designate such a file.
Improvements:
* `.terraform` directories could be created in any subdirectory when user runs `terraform init`.
* Quite an interesting variations of`.tfstate` files are created by Terraform such as `.*.tfstate.d` or `.*.tfstate.lock.info`. It's best not to name any file with `*.tfstate.*` pattern.
* `*.tfvars` files often contain private data and not supposed to be committed.