LINUX.ORG.RU

[c++] Этика написания кода

 


0

0

Где можно почитать про сабж? Как именовать классы, из каких соображений разбивать код на файлы, почему не принято использовать CamelCode, как вообще оформлять код?

Вот как обычно делают?

if ( a==b ) b=b+1;
if (a==b) ++b;
if (a == b)
   b++;
if (a == b) {
   b++;
}
if ( a == b )
{
   b++;
}
★★★★★

Ответ на: комментарий от Obey-Kun

> Касательно выбора языка... надо будет мне переписать это же на чистом С и на пайтоне (поискав замену OpenMP) и сравнить производительность.

В пайтоне можно найти только замену MPMD модели параллельных вычислений - PyMPI. SPMD на пайтон не ложится, поэтому найти аналог OpenMP не получится.

anonymous
()

Сравнил (без openmp) эту софтину на C++ и C. Я понимаю, конечно, что сравнивались, скорее, фичи gcc, но всё равно любопытно.

obey@damntux test % make
g++ main.cpp -o cpp_no_optimize                                                                                                                                                          
g++ -march=core2 -O2 -pipe -fomit-frame-pointer -ftree-vectorize -floop-interchange -floop-block -floop-strip-mine -ftree-loop-distribution main.cpp -o cpp_with_optimize                
gcc -std=gnu99 -lm  main.c -o c_no_optimize                                                                                                                                              
gcc -std=gnu99 -lm -march=core2 -O2 -pipe -fomit-frame-pointer -ftree-vectorize -floop-interchange -floop-block -floop-strip-mine -ftree-loop-distribution main.c -o c_with_optimize     
obey@damntux test % time ./c_no_optimize; time ./cpp_no_optimize; time ./c_with_optimize; time ./cpp_with_optimize
./c_no_optimize  29,90s user 0,08s system 99% cpu 30,143 total
./cpp_no_optimize  23,42s user 0,06s system 99% cpu 23,638 total
./c_with_optimize  21,18s user 0,06s system 99% cpu 21,338 total
./cpp_with_optimize  21,32s user 0,05s system 99% cpu 21,384 total
obey@damntux test % time ./c_no_optimize; time ./cpp_no_optimize; time ./c_with_optimize; time ./cpp_with_optimize
./c_no_optimize  30,11s user 0,07s system 99% cpu 30,238 total
./cpp_no_optimize  23,41s user 0,05s system 99% cpu 23,554 total
./c_with_optimize  21,36s user 0,06s system 99% cpu 21,470 total
./cpp_with_optimize  21,14s user 0,04s system 99% cpu 21,216 total

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Absurd

Насчёт Самоучителя Шилдта скажешь что-нибудь? Хочу сначала его изучит, чтобы потом заботать Александреску с Саттером и GoF.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

Да хз, не читал. Anyway, проблема курицы и яйца вообще в ООП преследует повсеместно. Для того чтобы научиться использовать ООП надо что-то написать с использованием ООП, например.

Absurd ★★★
()

IMHO, код должен нормально читаться, нормально читаться значит максимально информативным в заданном объёме без потери читаемости, следовательно IMHO лучший вариант это:

if (a==b)
i++;

причём имеен i++ а не ++i, потому как i++ выглядит более человечно. это же относится ко всяким a==10 или 10==a, первый вариант таки лучше.

gena2x ★★★
()
Ответ на: комментарий от gena2x
if (a==b) {
i++;
}

Занимает на одну строку меньше, зато при редактировании кода сложнее допустить ошибку вида

if (a==b)
i=2*i;
i++;
Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

>Занимает на одну строку меньше

Т.е. больше...

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

>Занимает на одну строку меньше, зато при редактировании кода сложнее допустить ошибку вида:

if (a==b)
i=2*i;
i++;

По моему 'сложнее допустить ошибку' - это плохое обоснование, потому что такую ошибку можно допустить только если не смотришь куда и что ты пишешь. Но при таком подходе никакие скобочки не помогут - можно и перед ifом и после скобочек воткнуть.

Вообще думаю что всякие
if ( a == b )
{
++i;
}
придумали просто торарищи у которых зарплата SLOCам меряется. Пусть они и дальше клепают свли системы, желательно где-нить в стороне.

Но вообще, конечно использовать надо coding-style проекта где работаешь, да. И по кодинг-сталу уже много можно сказать о проекте :)

gena2x ★★★
()
Ответ на: комментарий от gena2x

> И по кодинг-сталу уже много можно сказать о проекте :)

А уж по его отсутствию... 8))

kemm
()

мб "Практика программирования" Б.Керниган и Р.Пайк, глава 1. "Стиль программирования" еще придется кстати?

korvin_ ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.