YAML style recommendations
While I’m not a particularly big fan of YAML overall, it does have some clear benefits over both JSON and XML for human-editable configuration files. And while there are some pretty compelling alternatives, YAML is currently ubiquitous, so it makes sense to make the best of it.
Here are my favorite simple style rules. I apply them aggressively whenever I see some YAML that isn’t bolted to the wall and fixed with superglue.
Rule 1. Indent enumerations.
Rule: Indent enumerated items relative to the key that defines them.
Reason: Adhering to the Rectangle Rule makes it easier to find where blocks begin and end.
Bad:
list1:
- item1
- item2
list2:
- item3
- item4
Good:
list1:
- item1
- item2
list2:
- item3
- item4
This is by far my favorite rule. Even if you do nothing else, it improves the readability of any YAML file by an order of magnitude.
Rule 2. Separate nested blocks by white space.
Rule: Use empty lines to separate blocks of nested content.
Hint: A good rule of thumb is that any block that has children should be surrounded by white space on both sides.
Reason: Empty lines make it easier to find where blocks begin and end.
Bad:
metadata:
name: mulkcms2
namespace: mulk
labels:
name: mulkcms2-web
app: mulkcms2
spec:
replicas: 1
selector:
matchLabels:
app: mulkcms2
group: mulk
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
Good:
metadata:
name: mulkcms2
namespace: mulk
labels:
name: mulkcms2-web
app: mulkcms2
spec:
replicas: 1
selector:
matchLabels:
app: mulkcms2
group: mulk
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
This is a rule that I apply not just to YAML, but to any type of code whatsoever. It not just helps with readability, but also with editability (by enabling me to navigate by block).