nixp.ru v3.0

19 октября 2017,
четверг,
17:39:21 MSK

DevOps с компанией «Флант»
decvar написал 18 августа 2005 года в 23:56 (1078 просмотров) Ведет себя как мужчина; открыл 111 тему в форуме, оставил 1838 комментариев на сайте.

Мне понравилось. Рекомендую.

http://www.nixp.ru/pub/upload/decvar/cpp_rules.zip

Longobard

формат .rtf, брррр. Я его на покет залил (читаю обычно на покете), pocket word показал мне квадратики вместо букавок. Пришлось конвертить в .html :)

decvar

у меня был doc. я его решил переконвертить в rtf, дабы все делаюшие без ms office могли его без проблем читать. если кому надо — могу выслать doc.

Longobard

Да ладно тебе :)

По теме: пробежал глазами по диагонали, вроде ничего так, толково. Завтра почитаю более внимательно.

В принципе опыт переписывания чужого пхп кода и поиска багов в нем дает мне возможность написать нечто подобное, но для пхп.

decvar спасибо!

Upd:

Прочитал внимательнее. Что заметил:

1) много воды и растекания мыслью по древу. Похоже автор хотел написать очем много текста, имея мало материала

2) 70% мыслей автора — примитив вида «делайте отступы». Еще 10 % — очень спорные идеи.

3) Автор сам пишет так, что читать неприятно. Ладно еще идентификаторы вида имя_переменной_через_подчерк, это кому как нравится (хотя мне ИмяПеременной или имяПеременной нравятся больше). Так у него используется стиль записи «через строку":

int i = 0;
int b = 3;
double c = i/b;
printf ("%d",c);
return 0;

Лично у меня этот стиль вызывает рвотный рефлекс. Я два месяца работал над переписыванием чужого кода, часть его как раз была написана так. Это абсолютно нечитабельно (имхо). Отступы сливаются, кода получается много, да и вобще. Брр.

Короче читал-читал эту доку, ничего сильно полезного не нашел.

P.S.:

int i = 0, b = 3;
double c = i/b;
printf ("%d",c);
return 0;

согласитесь, это ведь более читабельно?

decvar

Ты читай о том, как дизайнить продукт, а не об отступах. Они-то как раз описаны совсем в другом документе.

А через строчку — это видимо форматирование такое было у переводчиков:)

На самом деле — очень много дельных мыслей про работу в команде и про поддержку кода….

У меня, кстати, в doc-е через строчку вообще нету.

пример:

int                x;             // Опишите, что делает x.
      unsigned long int ( *pfi )();     // Опишите, что делает pfi.
      int                z;             // Опишите, что делает z.
      const char         *the_variable; // Опишите, что делает
                                        //   the_variable.
      x            = 10;        // Здесь идет комментарий.
      the_variable = x;         // Здесь второй комментарий.
      z            = x;         // A здесь третий.

Меня например, всегда раздражало форматирование списка инициализации в несколько строк по несколько операций, и автор, как раз говорит, что это не хорошо, предлагая

derived::derived( char *init_str, int init_x )
                                         :base( str, x   )
                                         ,str ( init_str )
                                         ,x   ( init_x   )
      {}

И предикатное размещение множественных условий — это гуд:

if( its_thursday_and_the_moon_is_in_scorpio()
        ||its_friday_afternoon_and_close_to_quitting_time()
        ||i_just_cant_bear_to_look_at_this_computer_for_another_minute()
        )
      {
         go_home();
      }

Ты почитай про использование разных нотаций на c++.

rgo
decvar
Мне понравилось. Рекомендую.

http://www.nixp.ru/pub/upload/decvar/cpp_rules.zip

Не книга рулит. Как автор сам сказал в конце, «многие из правил дискуссионны», но всё равно (тем более) рулит.

myst

Ай, не рулит. Не рулит и всё. ИМХО рулят Practice of Programming (Kernighan, Pike) и C++ Coding Standards — 101 Rules, Guidelines, and Best Practices (Sutter, Alexandrescu). Специально выкладываю их <font color=«green»>сюда</font>.

Longobard
decvar
Меня например, всегда раздражало форматирование списка инициализации в несколько строк по несколько операций, и автор, как раз говорит, что это не хорошо, предлагая

derived::derived( char *init_str, int init_x )
                                         :base( str, x   )
                                         ,str ( init_str )
                                         ,x   ( init_x   )
      {}

Я бы запятые оставил на предыдущей строке, вот так:

derived::derived( char *init_str, int init_x )
                                         :base( str, x   ),
                                         str ( init_str ),
                                         x   ( init_x   )
      {}

Так получше выглядит.

decvar
И предикатное размещение множественных условий — это гуд:

if( its_thursday_and_the_moon_is_in_scorpio()
        ||its_friday_afternoon_and_close_to_quitting_time()
        ||i_just_cant_bear_to_look_at_this_computer_for_another_minute()
        )
      {
         go_home();
      }

А кто-то сомневался? :)

decvar
Ты почитай про использование разных нотаций на c++.

Почитал.