Self-assignment branches should be avoided as they are inefficient, unmaintanable and lack reability. Instead it is recommended to use single line conditionals if you need to make assignments.
It is considered inefficient as it generates extra assignment statements, this can have a large impact when such statements are called from within a loop. It is generally less maintanable when you have a bunch of such statements and you make a change to foo
's assignment logic, you will need to make sure that its tested everywhere.
foo = condition ? bar : foo
foo = condition ? foo : bar
foo = bar if condition
foo = bar unless condition