Re[6]: Google C++ Style Guide
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 02.07.08 12:17
Оценка: 1 (1) +2
Здравствуйте, Roman Odaisky, Вы писали:

RO>>>>>Я не доверяю гайдам, которые пишут «const string &in».

A>>[]
RO>>>Разве ты не видишь в этом ни одной — объективной — ошибки?
A>>"Объективной" -- ну, я не вижу

RO>Если хорошо подумать, то единственный правильный способ написать это — «std::string const& in».


Роман, если хорошо подумать, то все "единственно правильные способы" идут нафиг, оставляя без внимания возможные "доказательства".
Re[4]: Google C++ Style Guide
От: jazzer Россия Skype: enerjazzer
Дата: 02.07.08 12:17
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, Roman Odaisky, Вы писали:


RO>> Они должны поддерживать существующий код, не обеспечивающий exception safety. И в этом они правы: исключения нужно использовать или везде, или нигде.


E>Если исключения не начать использовать, то количество существующего кода, не обеспечивающего exception safety будет расти постоянно.


E>Ну это так, ответил банальностью на банальность. Сам я жалею, что в нескольких проектах лет шесть-семь назад не начал использовать исключений. Это была большая ошибка.


А вариантов, кроме переписывания старого кода и отлова всех исключений на границах, в общем-то, нет никаких.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[8]: Google C++ Style Guide
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 02.07.08 12:19
Оценка: +1 :)
Здравствуйте, Roman Odaisky, Вы писали:

RO>>>Не ошибок компиляции, а стилевых.


A>>Как стилевая ошибка может претендовать на объективность?!


RO>
void ramkrishnamahadevmaamabeganeshmaheshwarishardayanamahajaishreeramgaganpateynamahaomhrimshrimchammundiyavicheenamaha(const string* &s);

RO>здесь проблемы только субъективные?

Поведай, пожалуйста, единстенно правильный способ именовать идентификаторы, занятно будет послушать.
Re[3]: Google C++ Style Guide
От: jazzer Россия Skype: enerjazzer
Дата: 02.07.08 12:23
Оценка:
Здравствуйте, Erop, Вы писали:

E>Интересно, а как они с RAII при этом рабоьают? Неудобно же.


А RAII никуда не делась. Просто вместо исключений
void f()
{
   Guard1 g1;
   f1();
   f2();
   Guard2 g2;
   f3();
   f4();
}

будут ретурны
bool f()
{
   Guard1 g1;
   if (!f1()) return false;
   if (!f2()) return false;
   Guard2 g2;
   if (!f3()) return false;
   if (!f4()) return false;
}

Убого, конечно, выглядит, особенно когда аргументы у функций появятся, но RAII работает как надо.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[6]: Google C++ Style Guide
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.07.08 12:26
Оценка: 2 (1) +6 :)
Здравствуйте, Roman Odaisky, Вы писали:

RO>2. const справа позволяет избежать непонимания в случае «const T @ @ something», где «@» — «*» или «&». Сам видел «const T* &something». Что хотели написать и что получилось? То ли дело «T const* & something» или «T * const& something».


В чем разница между "const T * &" и "T const * &"?

RO>3. Приклеивать «*» и «&» к имени — глупо. Ясно, что с обоими пунктуаторами нужно поступать одинаково, но, в то время как «X *x» еще имеет смысл («*x имеет тип X»), запись «X &x» его лишена.


Глупо приколупываться к подобным мелочам и уделять им столь повышенное внимание.

RO>Так что «std::string const& in». Оно и читается удобнее, когда самое важное находится по краям строки, но это уже субъективно. Вроде такого:

RO>
RO>ns::foo s = getSomeFoo();
RO>ns::bar t;
RO>ns2::quux u;
RO>const ns::foo v = getSomeFoo()
RO>const ns2::bar w = getSomeBar()
RO>ns::quux x = getSomeQuux();
RO>ns2::quuux y;
RO>ns2::quuuux z = getSomeQuuuux();
RO>
Здесь, по-моему, const только отвлекают внимание.


RO>
RO>ns::foo s = getSomeFoo();
RO>ns::bar t;
RO>ns2::quux u;
RO>ns::foo const v = getSomeFoo()
RO>ns2::bar const w = getSomeBar()
RO>ns::quux x = getSomeQuux();
RO>ns2::quuux y;
RO>ns2::quuuux z = getSomeQuuuux();
RO>
А вот так куда лучше.


А по моему все с точностью до наоборот.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Google C++ Style Guide
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 02.07.08 12:46
Оценка:
Здравствуйте, jazzer, Вы писали:

A>>Как стилевая ошибка может претендовать на объективность?!


J>Легко. Если есть несколько стилевых решений, и в среднем (по ситуациям/программистам) одно ведет к большему количеству ошибок читающего/исправляющего код, чем другие, то оно является объективной стилевой ошибкой.


Даже в этом случае стиль, "лучший" с этой точки зрения для одной группы программистов, может привести, к примеру, к меньшей эффективности другой — например, более опытной группы.
Re[9]: Google C++ Style Guide
От: jazzer Россия Skype: enerjazzer
Дата: 02.07.08 12:49
Оценка:
Здравствуйте, Alxndr, Вы писали:

A>Здравствуйте, jazzer, Вы писали:


A>>>Как стилевая ошибка может претендовать на объективность?!


J>>Легко. Если есть несколько стилевых решений, и в среднем (по ситуациям/программистам) одно ведет к большему количеству ошибок читающего/исправляющего код, чем другие, то оно является объективной стилевой ошибкой.


A>Даже в этом случае стиль, "лучший" с этой точки зрения для одной группы программистов, может привести, к примеру, к меньшей эффективности другой — например, более опытной группы.


конь о четырех ногах, сам знаешь
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[10]: Google C++ Style Guide
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 02.07.08 12:52
Оценка:
Здравствуйте, jazzer, Вы писали:

J>>>Легко. Если есть несколько стилевых решений, и в среднем (по ситуациям/программистам) одно ведет к большему количеству ошибок читающего/исправляющего код, чем другие, то оно является объективной стилевой ошибкой.


A>>Даже в этом случае стиль, "лучший" с этой точки зрения для одной группы программистов, может привести, к примеру, к меньшей эффективности другой — например, более опытной группы.


J>конь о четырех ногах, сам знаешь


Так и "сдуру" можно такое поломать, что никакие "объективно лучшие" (по вышеописанному критерию) стили не спасут.
Re[4]: Google C++ Style Guide
От: Erop Россия  
Дата: 02.07.08 12:52
Оценка:
Здравствуйте, jazzer, Вы писали:

E>>Интересно, а как они с RAII при этом рабоьают? Неудобно же.

J>А RAII никуда не делась. Просто вместо исключений
Да ясно, что никуда не делось. Но ведь правда неудобно
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Google C++ Style Guide
От: vitalyk  
Дата: 02.07.08 12:55
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Если хорошо подумать, то единственный правильный способ написать это — «std::string const& in».


RO>Потому что:

RO>1. «std::» — надеюсь, понятно.
Согласен.

RO>2. const справа позволяет избежать непонимания в случае «const T @ @ something», где «@» — «*» или «&». Сам видел «const T* &something». Что хотели написать и что получилось? То ли дело «T const* & something» или «T * const& something».

Согласен.

RO>3. Приклеивать «*» и «&» к имени — глупо. Ясно, что с обоими пунктуаторами нужно поступать одинаково, но, в то время как «X *x» еще имеет смысл («*x имеет тип X»), запись «X &x» его лишена. Так что «X* x» и «X& x».

Не согласен с выделенным — не глупо, а дело вкуса. Я, к примеру, пишу именно так ("X &x"), поскольку, как гласит буква Стандарта:

8.3.1 Pointers
1 In a declaration T D where D has the form

* cv-qualifier-seqopt D1

and the type of the identifier in the declaration T D1 is “derived-declarator-type-list T,” then the type of the identifier of D is “derived-declarator-type-list cv-qualifier-seq pointer to T.”


Или, другими словами, '*' и '&' являются частью D ("*x"), а не T ("X"), а в Вашей записи выглядит все наоборот Да и вот сразу пример из стандарта (8.3.1/2), где по другому и не напишешь:
const int ci = 10, *pc = &ci, *const cpc = pc, **ppc;
int i, *p, *const cp = &i;


Конечно же, несколько объявлений на одной строке — то еще зло, но все-таки

... << RSDN@Home 1.2.0 alpha 4 rev. 1052>>
Re: Google C++ Style Guide
От: crable США  
Дата: 02.07.08 13:13
Оценка: +1
Здравствуйте, night beast, Вы писали:

NB>Google C++ Style Guide



Names and Order of Includes
▶ Use standard order for readability and to avoid hidden dependencies: C library, C++ library, other libraries' .h, your project's .h.


Забавно. Обычно, для избегания скрытых зависимостей рекомендуют как раз противоположный порядок включения заголовков.
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re[9]: Google C++ Style Guide
От: Roman Odaisky Украина  
Дата: 02.07.08 14:06
Оценка:
Здравствуйте, Alxndr, Вы писали:

RO>>
void ramkrishnamahadevmaamabeganeshmaheshwarishardayanamahajaishreeramgaganpateynamahaomhrimshrimchammundiyavicheenamaha(const string* &s);

RO>>здесь проблемы только субъективные?

A>Поведай, пожалуйста, единстенно правильный способ именовать идентификаторы, занятно будет послушать.


Ты же не споришь, что приведенный выше вариант — множественно неправильный?
До последнего не верил в пирамиду Лебедева.
Re: Google C++ Style Guide
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 02.07.08 14:09
Оценка: 2 (2)
Здравствуйте, night beast, Вы писали:

NB>Google C++ Style Guide


Лично мне Air Vehicle C++ Coding Standards пока что кажется наиболее вменяемым (из того, что я видел, естественно).
Опять таки, бесполезно листать его, не учитывая предметную область (hard real-time, avionics).
style real-time
Re[10]: Google C++ Style Guide
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 02.07.08 14:14
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>>>
void ramkrishnamahadevmaamabeganeshmaheshwarishardayanamahajaishreeramgaganpateynamahaomhrimshrimchammundiyavicheenamaha(const string* &s);


[]

RO>Ты же не споришь, что приведенный выше вариант — множественно неправильный?


Лично я — не спорю.
У меня просто идиосинкрозия на "объективность" и "единственно правильность".
Надеюсь, в том примере выше ты просто пошутил (и, на всякий случай, — да, я сам сторонник std::string const& in).
Re[11]: Google C++ Style Guide
От: jazzer Россия Skype: enerjazzer
Дата: 02.07.08 14:17
Оценка:
Здравствуйте, Alxndr, Вы писали:

A>Так и "сдуру" можно такое поломать, что никакие "объективно лучшие" (по вышеописанному критерию) стили не спасут.


а никто и не говорит, что спасут (хотя было бы здорово, если бы спасали, в сымсле, на любую ошибку в программе — ошибка компиляции).

А вот уменьшить вероятность ошибки — могут.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[5]: Google C++ Style Guide
От: jazzer Россия Skype: enerjazzer
Дата: 02.07.08 14:38
Оценка: +1 :)))
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, jazzer, Вы писали:


E>>>Интересно, а как они с RAII при этом рабоьают? Неудобно же.

J>>А RAII никуда не делась. Просто вместо исключений
E>Да ясно, что никуда не делось. Но ведь правда неудобно
неудобно, но все же лучше, чем в какой-нть джаве, где исключения есть, а RAII нет
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[6]: Google C++ Style Guide
От: COFF  
Дата: 03.07.08 08:26
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Если хорошо подумать, то единственный правильный способ написать это — «std::string const& in».


В общем случае может быть, а в случае аргумента функции const std::string& мне кажется более правильным — это устоявшаяся форма записи, которая, во-первых, широко применяется, а во-вторых, хотя это возможно связано с предыдущим, это легче читать. Обычно люди все-таки читают слева-направо и, взглянув на объявление, особенно с подсвеченным в IDE const, сразу видно, что это in параметр.

Вообще, мне этот гайд понравился. Это как с ПДД, которые, как известно, написаны кровью. Здесь похоже случай близкий — достаточно, например, попытаться портировать проекты с исключениями или rtti на платформы, где их нет или где они работают криво =)
Re[7]: Google C++ Style Guide
От: landerhigh Пират  
Дата: 04.07.08 00:36
Оценка:
Здравствуйте, eao197, Вы писали:

E>Глупо приколупываться к подобным мелочам и уделять им столь повышенное внимание.


Думаю, что возьму это и включу самым жирнейшим шрифтом в наши coding conventions.

А то есть тут за соседним столом один кадр, который уделяет повышенное внимание отделению знаков == и = пробелами от аргументов. Ни одного не пропустит, но при этом в код постоянно пролезает такой очевидный ужас, что становится страшно.
www.blinnov.com
Re[3]: Google C++ Style Guide
От: alexeiz  
Дата: 04.07.08 00:41
Оценка: +1
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, eao197, Вы писали:


E>>

E>>Exceptions
E>>▶ We do not use C++ exceptions.


E>>Сурово.


RO>Они же написали внизу, почему. Они должны поддерживать существующий код, не обеспечивающий exception safety. И в этом они правы: исключения нужно использовать или везде, или нигде.


Нифига. Нужно просто суметь определить границу между кодом, использующим исключения и не использующим. Такой границей может быть, например, экспортируемые из DLL наружу функции.
Re[8]: Google C++ Style Guide
От: jazzer Россия Skype: enerjazzer
Дата: 04.07.08 01:21
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Здравствуйте, eao197, Вы писали:


E>>Глупо приколупываться к подобным мелочам и уделять им столь повышенное внимание.


L>Думаю, что возьму это и включу самым жирнейшим шрифтом в наши coding conventions.


L>А то есть тут за соседним столом один кадр, который уделяет повышенное внимание отделению знаков == и = пробелами от аргументов. Ни одного не пропустит, но при этом в код постоянно пролезает такой очевидный ужас, что становится страшно.


судя по твоим словам, ты еще не читал книжку саттера-александреску по поводу стайл гайдов — рекомендую, там как раз одним их первых пунктов идет "не приколупывайтесь к мелочам!" (ну, может, глагол другой немножко )
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.