mesos-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Park" <mcyp...@gmail.com>
Subject Re: Review Request 34193: Refactored common functionality into BaseFlags
Date Wed, 20 May 2015 21:29:35 GMT


> On May 18, 2015, 10:04 p.m., Joris Van Remoortere wrote:
> > 3rdparty/libprocess/3rdparty/stout/tests/flags_tests.cpp, line 511
> > <https://reviews.apache.org/r/34193/diff/2/?file=963014#file963014line511>
> >
> >     Since we're in an implementation file, we can `using std::ostringstream;` and
then just use `ostringstream` here.
> 
> Marco Massenzio wrote:
>     do I have to?
>     I don't particularly like the `using` thing (although appreciate its usefulness)
and avoid using (ha, a pun!) it unless the type is used in several places, in which case,
the gain is significant.
> 
> Joris Van Remoortere wrote:
>     I'm not sure if we have an explicit rule here for this. I just know if someone else
comes to review this code, they will point out the same thing. Let's just go with consistency.
> 
> Marco Massenzio wrote:
>     I'm not sure I follow the logic here, Joris - I'll go along with it, as an extra
20 keystrokes or so are not something I want to make a big issue about, but it seems warped;
I also note here, that I'm adding the `using` clause some several 100's lines above where
it's used, and that goes against the whole concept of readability.
> 
> Marco Massenzio wrote:
>     BTW - just came across this:
>     ```
>         std::string pad(PAD + width - line.size(), ' ');
>         line += pad;
>     
>         size_t pos1 = 0, pos2 = 0;
>         // ...
>         while (pos2 != std::string::npos) {  
>     ```
>     in flags.hpp - so it would appear that using namespace-scoped variables if just fine
(at least in Stout)?
>     IMO this only makes sense if you use the same type/variable several times and/or
typing up the full namespace is tedious: `std::` is actually pretty low overhead.

Our style guide isn't unclear on the use of `using`. But regarding the following statement:
> in flags.hpp - so it would appear that using namespace-scoped variables if just fine
(at least in Stout)?

This is because `flags.hpp` is a header file. It's very bad practice to use `using` declarations
in a header file, since anything that includes it will implicitly inherit the declarations.
Esepcially in a library header like `stout` which is included pretty much everywhere. Note
that Joris qualified his statement with: "Since we're in an implementation file"

I personally don't have strong opinions about this. However, looking through the rest of the
codebase, at least for `std::ostringstream` in particular, there are 9 cases where we do `using
std::ostringstream;` and refer to `ostringstream` only once.

```
src/exmaples/persistent_volume_framework.cpp
src/linux/perf.cpp
src/log/tool/benchmark.cpp
src/log/tool/initialize.cpp
src/log/tool/read.cpp
src/log/tool/replica.cpp
src/slave/containerizer/isolators/cgroups/mem.cpp
src/slave/containerizer/isolators/network/port_mapping.cpp
src/tests/isolator_tests.cpp
```

As opposed to 3 instances of `std::ostringstream` being referenced once in the file.

```
3rdparty/libprocess/src/pid.cpp
3rdparty/libprocess/src/process.cpp
3rdparty/libprocess/src/tests/http_tests.cpp
```

The review comments in the past from folks have been to declare the `using` at the top (albeit
not formalized), so I would err on that side in this case. Our standard approach is to: follow
what at least seems to be majority in the codebase, come up with a concrete style guide (e.g.
"used in several places" -- how many is several?) and create a JIRA ticket for the consistent
update around the codebase.


- Michael


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/34193/#review84181
-----------------------------------------------------------


On May 19, 2015, 10:31 p.m., Marco Massenzio wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/34193/
> -----------------------------------------------------------
> 
> (Updated May 19, 2015, 10:31 p.m.)
> 
> 
> Review request for mesos, Benjamin Hindman and Joris Van Remoortere.
> 
> 
> Bugs: MESOS-2711
>     https://issues.apache.org/jira/browse/MESOS-2711
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Jira: MESOS-2711
> 
> Every program that uses stout's `BaseFlags` ends up
> re-implementing the `printUsage()` function, and adding
> a `bool help` (and associated --help flag); this functionality
> has now been refactored in the base class and is available everywhere.
> 
> This change attempts to be backward-compatible, so it
> does not alter the behavior of the program when --help is
> invoked (by, eg, automatically printing usage and exiting)
> but leaves up to the caller to check for `flags.help` and then
> decide what action to take.
> 
> There is now a default behavior for the "leader" ("Usage: <prog name> [options]")
> but the client API allows to modify that too.
> 
> Note - anywhere I found the use of the `--help` flag the behavior was the same: 
> print usage and exit (see also https://reviews.apache.org/r/34195).
> 
> 
> Diffs
> -----
> 
>   3rdparty/libprocess/3rdparty/stout/include/stout/flags/flags.hpp fb383b463a99924483634eebf22bf34de318f920

>   3rdparty/libprocess/3rdparty/stout/tests/flags_tests.cpp 00281195b53d2597bdb46e3fe6cd9d46a5e9b1f1

> 
> Diff: https://reviews.apache.org/r/34193/diff/
> 
> 
> Testing
> -------
> 
> make check
> 
> **NOTE** this change by itself breaks the build, because the --help is redefined everywhere
(16 places, as of last count): CL 34195 fixes that and makes all build/tests pass.
> 
> 
> Thanks,
> 
> Marco Massenzio
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message