-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
<snip>
My only remaining question then is should we also be
forcing whitespace between each case block for legibility,
something like this?
do_something(); switch(foo) { case bar: a=1; break;
case baz: { a=2; ...long case block... c=4; break; }
case asd: a=3; break;
default: a=0; } do_something_else();
Empty lines between cases makes reading a little easier IMO. Sounds like a good idea to
me.
<snip>
if ((disktype
& TDEDiskDeviceType::CDROM) || (disktype & TDEDiskDeviceType::CDR) || (disktype
&
TDEDiskDeviceType::CDRW))
or
if ((disktype & TDEDiskDeviceType::CDROM) ||
(disktype & TDEDiskDeviceType::CDR) || (disktype &
TDEDiskDeviceType::CDRW))
I am curious as to why you find this more intuitive than having the logical operator
before the comparison.
Roughly translating to English the above style reads something like:
if the box is black AND <pause> the box is not square AND <pause> the sphere
is purple OR the sphere is NOT PRESENT
THEN
versus
if the box is black <pause> AND the box is not square <pause> AND the sphere
is purple <pause> OR the sphere is NOT
PRESENT <pause> THEN
You can see how in the latter style the relevant logical operator is stated first, then
the expression, with all
required information to understand the conditional contained on one line instead of
spanning two lines. The latter
is easier for me to grasp all of the conditions required in a large expression; the
former requires a bit more
effort.
It isn't a big deal either way for me, and I'd like Slavek's input before
deciding, but I am curious as to the
thought processes behind the suggested style. :-)
This is of course subjective and not a big deal for me as well (I have already
worked with both style actually).
Mostly two reasons:
1) the operator at the end of the line tells me immediately that the conditional
expression is not over and I need to
continue reading the next line
2) logically easier to read complex statement. For example
if (a == 3 &&
(b == 5 || c == 4 ||
(d == 10 && e == 20)))
rather than:
if (a == 3
&& (b == 5 || c == 4
|| (d == 10 && e == 20)))
I find the second one more prone to misinterpretation, since the || in the 3rd row might
look at the same level as the
&& in the second row at first sight. And in TDE I have seen some rather complex
and long ifs :-)
Just my 2 cents, let's see what Slavek thinks as well.
Another thing is class/struct member names. I usually add an "m_" to every
member, so I know immediately that a
variable is a class member. TDE is a very wide variety of class member names. What is your
opinion?
Another thing is class constructor parameter definition. Which one is better?
MyClass::MyClass(int i, char c, int *p, double d) : m_i(i), m_c(c), m_p(p),
m_d(d)
{
do_something();
}
or
MyClass::MyClass(int i, char c, int *p) :
m_i(i), m_c(c), m_p(p),
m_d(d)
{
do_something();
}
or
MyClass::MyClass(int i, char c, int *p)
: m_i(i), m_c(c), m_p(p),
m_d(d)
{
do_something();
}
or
MyClass::MyClass(int i, char c, int *p)
: m_i(i),
m_c(c),
m_p(p),
m_d(d)
{
do_something();
}
or
MyClass::MyClass(int i, char c, int *p) :
m_i(i),
m_c(c),
m_p(p),
m_d(d)
{
do_something();
}
Cheers
Michele
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAEBCgAGBQJUsKmoAAoJECp1t8qK3tXPULIP/1+e3LQ/4OGFymV9XrBHY9lT
yfuqXHXtPRucPQTsJLQ5sei1VxGlXPcoMqrRAFD/mMGGPsfqi/8Uj2VreOo8w3yB
sFjod/NtvvU5vk4uJQnbZn6O6FJn3Dr51KeCu+1dB/jhWCquD53oZCuDHh4asbRG
LsDRoleq8HHh241ciaLr/MdPd2VVau8jztEmO/OkuLAlcut9ebxtNNB37v3YOS5T
OvEdHqLDUb7vkIxaDjsuOviE+mbgfWtYKaxBTNwm31uiHDxfsEJNMpPt/UIahrNk
2H3RIrLbncnxBMblL4faYjbXHV09/QBiKuLCEYeXi1+1VUuZBU1H6Ce9D/UJoIrA
Qvsq4kgmzayLQ/0iUVo8KmtjGodXz5uxXUTRjFJkY9C7YOjbFJSZEZBGHB4rD0YK
/zO5DJCcdLMBGYkBkK2sdrA+ujwDEOaNXmvFiDel3XJUvfgkXOIsKhd4HHN8IzrJ
3bpYLb+osjfezvSC923VBwHLjxG4h14FC9WW45wzoyJ8dEtDn6690LQnjj7R1t7X
VqHilFMXUCDsNYP4eCr9VzkQOE0PLj73UfqaaVhJJVYi2OEfae5rIjkCDPV7hbUP
9y02l32AsW6EuCUQOs1SPdeI+xlXyuAp1OJmQ3wcndIE7yOjRolaIm83MpjdOkCl
9zjTw818YSPDc5aDhIyO
=QWhp
-----END PGP SIGNATURE-----