Huh? My emacs auto-indents both styles in exactly the same way:
void foo() {
code...;
}
void foo()
{
code...;
} void foo() {
code...;
}
void foo()
{
code...;
} stuffstuffstuff....
stuffstuffstuff...
So I read C and Python (and Lisp) code the same way. A naked open brace looks jarring and ugly to me. It also increases the separation of other related parts of the code, i.e. if (...) {
while(...) {
do(...) {
vs if (...)
{
while(...) {
{
do(...) {
The latter seems unnecessarily wasteful to me. void MyLongMethodName(SomeLongParamType param1, SomeOtherLongParamType param2,
YetAnotherLongParamType param3) {
if (longContrivedVariableName1 == longContrivedVariableName2 &&
longContrivedVariableName1 != longContrivedVariableName3) {
// do stuff
}
}
void MyLongMethodName(SomeLongParamType param1, SomeOtherLongParamType param2,
YetAnotherLongParamType param3)
{
if (longContrivedVariableName1 == longContrivedVariableName2 &&
longContrivedVariableName1 != longContrivedVariableName3)
{
// do stuff
}
} void MyLongMethodName(SomeLongParamType param1, SomeOtherLongParamType param2,
YetAnotherLongParamType param3) {
if (longContrivedVariableName1 == longContrivedVariableName2 &&
longContrivedVariableName1 != longContrivedVariableName3) {
// do stuff
}
} void MyLongMethodName(
SomeLongParamType param1,
SomeOtherLongParamType param2,
YetAnotherLongParamType param3
) {
if (
longContrivedVariableName1 == longContrivedVariableName2 &&
longContrivedVariableName1 != longContrivedVariableName3
) {
// do stuff
}
}
I also make liberal use of temporary variables: void MyLongMethodName(
SomeLongParamType param1,
SomeOtherLongParamType param2,
YetAnotherLongParamType param3
) {
auto condition1 = longContrivedVariableName1 == longContrivedVariableName2;
auto condition2 = longContrivedVariableName1 != longContrivedVariableName3;
if (condition1 && condition2) {
// do stuff
}
}
Vertical space is allocated to the actual parameters and conditions, and the extra syntax-only lines exist only to separate chunks. This works well with "paragraphs": void MyLongMethodName(
SomeLongParamType param1,
SomeOtherLongParamType param2,
YetAnotherLongParamType param3
) {
auto condition1 = longContrivedVariableName1 == longContrivedVariableName2;
auto condition2 = longContrivedVariableName1 != longContrivedVariableName3;
if (condition1 && condition2) {
// do stuff
}
auto someData = buildSomeData();
doSomethingWith(someData);
while (someCondition) {
// loop
}
finishUp();
return someData;
}