refactoring: early return 'if else' syntax -> 'if' syntax#167
refactoring: early return 'if else' syntax -> 'if' syntax#167archsyscall wants to merge 1 commit intogoogle-deepmind:v2from
Conversation
tomhennigan
left a comment
There was a problem hiding this comment.
Thanks for the patch! Code readability is really important and we really appreciate you taking the time to help us improve it.
For these specific cases we don't have a well established style guide saying whether if return else return is preferable vs. if return; return so I would be hesitant about applying this consistently in Sonnet.
However I think in this case you have identified a case where we can avoid repeating ourselves which is (in my experience) nearly always a good thing. PTAL at the suggested edit and see if you agree!
| @@ -125,8 +125,7 @@ def __call__(self, inputs: tf.Tensor, multiplier: types.FloatLike = None): | |||
| self._initialize(inputs) | |||
| if multiplier is not None: | |||
There was a problem hiding this comment.
So it seems to me we have a pattern of :
if A:
return B + (C * D)
else:
return B + DI think perhaps in this case, if we want to avoid the extra else perhaps we should extract more of the common part of the two expressions (e.g. the if A block should just scale the thing we add to B.
if A:
D = C * D
return B + DConcretely in this case it would look like the following (I think we cannot use *= because this is not supported on tf.Variable):
b = self.b
if multiplier is not None:
b = b * multiplier
return inputs + bThere was a problem hiding this comment.
Sounds good, please feel free to push a new commit with these changes so we can review and get them merged 😄
I think 'if syntax' is better than 'if else syntax' in the early return pattern.
Thanks You!