You gave two equally good options. The first is the most versatile. The second is more ategorization. Choice someone like that.
One of the options (I try to do always) — initialization of variables. To complete the actions describe variables and assign them default values. If the appropriate parameters are set, the variable values are updated.
If you do not assign the argument values to certain variables, and directly appeal to these arguments, the second variant of the record, in my opinion, more beautiful. And the first one is more readable for the person who is poorly familiar with additional language constructs like the 2nd option. plus the second option can generate more compact code, but hardly on the General background of such savings that will give :)
Type options 2 I personally try to only use if the arguments in the expression is rather short. Too bulky design illegible. Forget, then he will understand what is meant by that :)