Indent with tabs

There are two uses of white space in source code: indentation and alignment.

Indentation expresses the semantic level of a source line. This task falls naturally onto tabs.

If you have background in Web development or other computer layout systems, think of relative and absolute sizes. A tab is like 2rem; a space is like 32px or 32pt.

Align with spaces

Tabs are not ideal for alignment: if the content before it is longer than a tab's width, the following example that looks fine with tab width 4:

routers.add({
	"/"						=> get_index,
	"/transactions/{id}"	=> get_transaction,
	"/account"				=> get_account,
})

.. looks terrible with tab width 8:

routers.add({
	"/"						=> get_index,
	"/transactions/{id}"	=> get_transaction,
	"/account"				=> get_account,
})

Here, spaces are more fit:

routers.add({
	"/"                  => get_index,
	"/transactions/{id}" => get_transaction,
	"/account"           => get_account,
})