Alignment is the problem here, not the proportional font.
I gave up alignment in my code many years ago, back when I was still using monospaced fonts. I gave it up because I was really tired of fiddling with spaces when I changed a name in code like this:
myType someFunctionName(someType someVariable,
someOtherType someOtherVariable,
int foo) {
...
}
So I started doing this instead: myType someFunctionName(
someType someVariable,
someOtherType someOtherVariable,
int foo
) {
...
}
I found that I just didn't care that "someVariable" and "someOtherVariable" weren't lined up one above the other. In fact, I actually liked the fact that the variable names and types were closer together, so my eyes didn't have to keep scanning across a sea of whitespace to match things up. And I really liked not having to add and remove spaces every time I changed a name.As a bonus, the overall width of my code was often much less, as in this example.
Later I discovered that using this style, my code looked the same in a proportional font as it did in a monospaced font. So I switched to a proportional font and never looked back. But the code is still just as readable in a monospaced font.