It is my opinion that tabs are better than spaces, especially when working in a team. Why you aks? When using tabs everyone has the ability to indent the code according to their own preference. If your teams decides on using spaces you also need to agree on how many spaces to use for an indent. Do you pick 2 spaces, 4 spaces or something else? Odds are, someone is not going to be happy with the team's decision.
Using tabs gives everyone the freedom to indent the code to their own liking. Most editors have an option to specify how many columns a tab should indent. This allows each team member to pick the setting they're most comfortable with.
To prevent (Git) diff nightmares just follow these simple steps:
- Always follow the convention used in the project you're working on. If it is a legacy code base and uses 5 spaces for indenting code, use 5 spaces in the code you add or modify;
- Have your editor (or Git pre-commit hook) strip all trailing whitespace from your files. Trailing whitespace serves no purpose and can only add noise when generating a diff between two file versions;
- An exception to the rule above is the empty line at the end of file, this does serve a purpose;