[ 
https://issues.apache.org/jira/browse/THRIFT-2429?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13975926#comment-13975926
 ] 

Randy Abernethy commented on THRIFT-2429:
-----------------------------------------

Hey Aleksey,

I understand and respect your view.

So it sounds like we have two contenders for the implementation of the 
no-serialize-default feature.

*1) Use =? for reader side defaults*
PROS: 
- Easy to explain, =? always means do not serialize the default (though 
implementations may serialize defaults as a fall back).
- Doesn't tamper with = defaults, leaving them backward compatible and 
consistent (= maintains its "always serialize the default" meaning) 
- Lets the user choose any combination of requiredness and default style they 
want (can be applied to normal and optional in particular)

CONS:
- May be viewed as inconsistent with required fields 
- Introduces a new operator in the IDL
- Enables (keeps) combinations that are only valuable in some fairly exotic 
cases

*2) Use optional fields with = default values as reader side default*
PROS:
- Adds no new IDL syntax
- Creates a valuable feature out of the otherwise fairly redundant combination 
of optional fields with default values (which are currently almost exactly like 
normal fields with default values)

CONS:
- Leaves no way to get reader side default functionality with normal 
requiredness
- Causes = to work differently with different requiredness, making the default 
value function harder to understand

Aleksey makes a good case for optional with = default. I am on the =? side of 
the fence but I will happily support the optional+default choice if that is 
what the cognoscenti prefer (the spread is pretty narrow). 

Please chime in if you see other pros/cons or disagree with those above. Would 
be good if we could make a call on this and move forward in the short term, so 
voice your opinion if you have a preference. 

Best,
Randy

> Provide option to not write default values, rely on receiver default 
> construction instead
> -----------------------------------------------------------------------------------------
>
>                 Key: THRIFT-2429
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2429
>             Project: Thrift
>          Issue Type: Improvement
>          Components: C++ - Compiler
>    Affects Versions: 0.9.1
>            Reporter: Chris Stylianou
>            Assignee: Randy Abernethy
>              Labels: default, optional, required
>
> Would there be any objections to a patch that does not write default values 
> (essentially the same logic as the optional attributes). This obviously 
> relies on the receiving application using the same IDL version to ensure the 
> defaults used on object construction match the senders.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to