[ https://issues.apache.org/jira/browse/MESOS-3754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14963224#comment-14963224 ]
Klaus Ma commented on MESOS-3754: --------------------------------- There's a case when fixing MESOS-3405: for the deprecated case, should we also log error message for them? > Update the style guide with a rule regarding the use of default case in > switch statements > ----------------------------------------------------------------------------------------- > > Key: MESOS-3754 > URL: https://issues.apache.org/jira/browse/MESOS-3754 > Project: Mesos > Issue Type: Bug > Components: documentation > Reporter: Michael Park > > This is the continuation of the initial discussions started on MESOS-2664. > The motivation is to rely on the compiler for compile-time errors for cases > missing in the {{switch}} statement, rather than aborting in the {{default}} > case at runtime. > The pattern we want to avoid is a {{switch}} statement that fully enumerates > the cases of an {{enum}} *and* having a {{default}} case that aborts at > runtime. The preferred approach is to omit the {{default}} case. > This pattern can be seen across the codebase, one example is: > {code} > switch (volume.mode()) { > case Volume::RW: volumeConfig += ":rw"; break; > case Volume::RO: volumeConfig += ":ro"; break; > default: > LOG(FATAL) << "Unknown Volume mode: " << volume.mode(); > break; > } > {code} > The proposal is not to disallow uses of {{default}} cases, but to only use > them when it actually carries some meaningful fallback behavior. > This use of {{default}} leads to the following advantages: > 1. If we miss any of the cases, you get notified via a compiler-error. > 2. If a new value is added to an {{enum}}, the compiler reports all of the > places that needs to be updated to handle the new value. > Ideally, the compiler would also prevent us from covering all enumerations > *and* providing a {{default}}. Since this is not an available option, we aim > to capture this as a style guideline. -- This message was sent by Atlassian JIRA (v6.3.4#6332)