Стандарты программирования на C++
От: Алексей Кирюшкин Россия http://malgarr.blogspot.com/
Дата: 11.11.05 04:16
Оценка: 71 (6) +1
Статья:
Герб Саттер, Андрей Александреску, Стандарты программирования на C++
Автор(ы): Герб Саттер, Андрей Александреску

Эта книга поможет новичку стать профессионалом, так как в ней
представлен сконцентрированный лучший опыт программистов на C++,
обобщенный двумя экспертами мирового класса. Начинающий программист
найдет в ней простые и понятные рекомендации для ежедневного
использования, подкрепленные примерами их конкретного применения
на практике.


Авторы:
Алексей Кирюшкин

Аннотация:
Эта книга поможет новичку стать профессионалом, так как в ней представлен сконцентрированный лучший опыт программистов на C++, обобщенный двумя экспертами мирового класса. Начинающий программист найдет в ней простые и понятные рекомендации для ежедневного использования, подкрепленные примерами их конкретного применения на практике.

Опытные программисты найдут в ней советы и новые рекомендации, которые можно сразу же принять на вооружение. Программисты-профессионалы могут использовать эту книгу как основу для разработки собственных стандартов кодирования, как для себя лично, так и для группы, которой они руководят. Конечно, книга рассчитана в первую очередь на профессиональных программистов с глубокими знаниями языка, однако она будет полезна любому, кто захочет углубить свои знания в данной области.
Re: Стандарты программирования на C++
От: Angler Россия  
Дата: 11.11.05 16:14
Оценка: +1
Здравствуйте, Алексей Кирюшкин, Вы писали:

АК>Конечно, книга рассчитана в первую очередь на профессиональных программистов с глубокими знаниями языка, однако она будет полезна любому, кто захочет углубить свои знания в данной области.


Те кто хотел углубить свои знания в данной области, давно прочитали Саттера и Майерса. В этой книге ничего нового нет
Re[2]: Стандарты программирования на C++
От: srggal Украина  
Дата: 11.11.05 16:19
Оценка: +2
Здравствуйте, Angler, Вы писали:

A>Здравствуйте, Алексей Кирюшкин, Вы писали:


АК>>Конечно, книга рассчитана в первую очередь на профессиональных программистов с глубокими знаниями языка, однако она будет полезна любому, кто захочет углубить свои знания в данной области.


A>Те кто хотел углубить свои знания в данной области, давно прочитали Саттера и Майерса. В этой книге ничего нового нет


Да, нет, зато она их резюмирует, и очень просто и замечательно
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[3]: Стандарты программирования на C++
От: srggal Украина  
Дата: 11.11.05 16:20
Оценка:
Здравствуйте, srggal, Вы писали:

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


A>>Здравствуйте, Алексей Кирюшкин, Вы писали:


АК>>>Конечно, книга рассчитана в первую очередь на профессиональных программистов с глубокими знаниями языка, однако она будет полезна любому, кто захочет углубить свои знания в данной области.


A>>Те кто хотел углубить свои знания в данной области, давно прочитали Саттера и Майерса. В этой книге ничего нового нет


S>Да, нет, зато она их резюмирует, и очень просто и замечательно


Кстати, с момента выхода стандарта — не так часто в С++ появляется что-то новое
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[3]: Стандарты программирования на C++
От: Angler Россия  
Дата: 11.11.05 16:26
Оценка:
Здравствуйте, srggal, Вы писали:

S>Да, нет, зато она их резюмирует, и очень просто и замечательно


Мне кажется, что в статье надо было это парисать первым предложением
Re[4]: Стандарты программирования на C++
От: Angler Россия  
Дата: 11.11.05 16:27
Оценка:
Здравствуйте, srggal, Вы писали:

S>Кстати, с момента выхода стандарта — не так часто в С++ появляется что-то новое


ну а зачем тогда переливать с пустого в порожнее?
Re[4]: Стандарты программирования на C++
От: srggal Украина  
Дата: 11.11.05 16:30
Оценка:
Здравствуйте, Angler, Вы писали:

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


S>>Да, нет, зато она их резюмирует, и очень просто и замечательно


A>Мне кажется, что в статье надо было это парисать первым предложением

100%
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[5]: Стандарты программирования на C++
От: srggal Украина  
Дата: 11.11.05 16:32
Оценка:
Здравствуйте, Angler, Вы писали:

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


S>>Кстати, с момента выхода стандарта — не так часто в С++ появляется что-то новое


A>ну а зачем тогда переливать с пустого в порожнее?


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

Думаю, я такой не один.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[6]: Стандарты программирования на C++
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 11.11.05 16:43
Оценка: +1
Здравствуйте, srggal, Вы писали:

S>Потому, например, что лично для меня гараздо проще прочитать текст книги сабжевых авторов, чем сухой текст стандарта, я знаю, что стандарт первоисточник, он у меня есть,


эта... к стандарту языка C++ эта книга никакого отношения не имеет
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Стандарты программирования на C++
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 11.11.05 16:43
Оценка: +1
Здравствуйте, Angler, Вы писали:

S>>Да, нет, зато она их резюмирует, и очень просто и замечательно

A>Мне кажется, что в статье надо было это парисать первым предложением

а мне казалось, что статьи надо дочитывать до конца, а только потом писать к ним замечания
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Стандарты программирования на C++
От: Angler Россия  
Дата: 11.11.05 16:46
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>а мне казалось, что статьи надо дочитывать до конца, а только потом писать к ним замечания


Re[7]: Стандарты программирования на C++
От: srggal Украина  
Дата: 11.11.05 16:56
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

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


S>>Потому, например, что лично для меня гараздо проще прочитать текст книги сабжевых авторов, чем сухой текст стандарта, я знаю, что стандарт первоисточник, он у меня есть,


OE>эта... к стандарту языка C++ эта книга никакого отношения не имеет


Имелось в иду, что до всего что описано в этих книгах можно дойти самому читаю стандарт

TypeList можно и самому придумать

ЗЫ
Или я чего-то не понял ?
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[5]: Стандарты программирования на C++
От: srggal Украина  
Дата: 11.11.05 16:56
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

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


S>>>Да, нет, зато она их резюмирует, и очень просто и замечательно

A>>Мне кажется, что в статье надо было это парисать первым предложением

OE>а мне казалось, что статьи надо дочитывать до конца, а только потом писать к ним замечания

Чтение по диагонали не практикуете ?
... << RSDN@Home 1.1.4 stable rev. 510>>
Re: Стандарты программирования на C++
От: remark Россия http://www.1024cores.net/
Дата: 11.11.05 17:31
Оценка:
Здравствуйте, Алексей Кирюшкин, Вы писали:

АК>Статья:

АК>Герб Саттер, Андрей Александреску, Стандарты программирования на C++
Автор(ы): Герб Саттер, Андрей Александреску

Эта книга поможет новичку стать профессионалом, так как в ней
представлен сконцентрированный лучший опыт программистов на C++,
обобщенный двумя экспертами мирового класса. Начинающий программист
найдет в ней простые и понятные рекомендации для ежедневного
использования, подкрепленные примерами их конкретного применения
на практике.


must read

Хотя, конечно, прочитав оглавление увидел половину знакомых заголовков — пересекаются во многом с Exceptional C++ Style: 40 New Engineering Puzzles... и CUJ (что в общем-то не удивительно, т.к. авторы одни и те же).

Но всё равно must read

p.s. прочитав оглавление так же понял всё о чём собственно книга... т.ч. саму книгу уже можно не читать, но оглавление must read


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re: Стандарты программирования на C++
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 12.11.05 08:31
Оценка:
Здравствуйте, Алексей Кирюшкин, Вы писали:

АК>Статья:

АК>Герб Саттер, Андрей Александреску, Стандарты программирования на C++
Автор(ы): Герб Саттер, Андрей Александреску

Эта книга поможет новичку стать профессионалом, так как в ней
представлен сконцентрированный лучший опыт программистов на C++,
обобщенный двумя экспертами мирового класса. Начинающий программист
найдет в ней простые и понятные рекомендации для ежедневного
использования, подкрепленные примерами их конкретного применения
на практике.


Рекомендую всем, у кого нет времени дочитать до конца "Совершенный код" Макконелла

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

Как жаль, что в моем детстве не было таких книг. Все самому, все самому, своими руками ...
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[2]: Стандарты программирования на C++
От: _Winnie Россия C++.freerun
Дата: 12.11.05 10:33
Оценка: 1 (1) +1
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Здравствуйте, Алексей Кирюшкин, Вы писали:

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

Ух ты, расскажи
Правильно работающая программа — просто частный случай Undefined Behavior
Re[3]: Стандарты программирования на C++
От: Cyberax Марс  
Дата: 12.11.05 13:55
Оценка: -2 :)
_Winnie wrote:

> КД>Для меня это была самая очень полезная трата денег — за 200 рублей

> я понял как убить предупреждение компилятора, которое меня долбало
> года три.
> Ух ты, расскажи

Выкидывам все и переписываем на С#, где таких предупреждений не будет

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[3]: Стандарты программирования на C++
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 12.11.05 16:48
Оценка: :))
Здравствуйте, _Winnie, Вы писали:

_W>Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>>Здравствуйте, Алексей Кирюшкин, Вы писали:

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

_W>Ух ты, расскажи

У меня шаблон реализации методов COM объектов, в общих чертах, выглядит так
HRESULT __stdcall TComObject::Method(...)
{
 ::SetErrorInfo(0,NULL);

 HRESULT hr=S_OK;

 _OLE_TRY_
 {
  //реализация
 }
 _OLE_CATCHES_

 return hr;
}//Method


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

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

После 15-20 минут чтения книженции меня осенило:
HRESULT hr=S_OK;hr;

В результате просмотра всего имеющегося кода с реализациями COM-объектов, было обнаружено с десяток достаточно критических ошибок — в целях борьбы с этим предупреждением компилятора, в некоторых методах hr не инициализировали ...

Вот. В конечном итоге, вышеуказанная конструкция была оформлена в виде макроса (сейчас в меня полетят камни )
#ifndef NDEBUG
# define OLE_DECLARE_HR(init_value)                               \
  HRESULT const hr_274B68E9B0254F1C97BBDEC1A205324D=(init_value); \
                                                                  \
  HRESULT hr=hr_274B68E9B0254F1C97BBDEC1A205324D;hr;
#else
# define OLE_DECLARE_HR(init_value)                               \
  HRESULT hr=(init_value);hr;
#endif

И код выглядит так:
HRESULT __stdcall TComObject::Method(...)
{
 ::SetErrorInfo(0,NULL);

 OLE_DECLARE_HR(S_OK);

 _OLE_TRY_
 {
  //реализация
 }
 _OLE_CATCHES_

 return hr;
}//Method

Как мало нужно заплатить за, пусть кратковременное, счастье

Кстати, пока писал это сообщение, обнаружил пару неприятных моментов в файлах, из которых брал код. Так что, _Winnie — спасибо!
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[4]: Стандарты программирования на C++
От: z00n  
Дата: 12.11.05 17:01
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>При генерации релизного кода, компилятор ругался, что значение, назначенное hr, не было использовано.

КД>HRESULT hr=S_OK;hr;

В "C++ Coding Standards, 101" есть и это:
// new version: probably eliminates warning
void Fun() {
 Lock lock;
 lock;

 // ...

}


Re[5]: Стандарты программирования на C++
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 12.11.05 17:27
Оценка:
Здравствуйте, z00n, Вы писали:

КД>>При генерации релизного кода, компилятор ругался, что значение, назначенное hr, не было использовано.

КД>>HRESULT hr=S_OK;hr;

Z>В "C++ Coding Standards, 101" есть и это


По-моему мы же не "Муму", а именно эту книгу обсуждаем, из которой и было полученно вышеуказанное знание?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re: Стандарты программирования на C++
От: _Winnie Россия C++.freerun
Дата: 12.11.05 18:20
Оценка:
Здравствуйте, Алексей Кирюшкин, Вы писали:

АК>Опытные программисты найдут в ней советы и новые рекомендации, которые можно сразу же принять на вооружение. Программисты-профессионалы могут использовать эту книгу как основу для разработки собственных стандартов кодирования, как для себя лично, так и для группы, которой они руководят. Конечно, книга рассчитана в первую очередь на профессиональных программистов с глубокими знаниями языка, однако она будет полезна любому, кто захочет углубить свои знания в данной области.


Если прочитал EC++/MEC++ другие книги классиков, эта книжка даст мне какие-то kill-знания, которых я раньше не имел?
Или это будет для меня просто сборник хороших добрых советов, без которых лекго прожить?
Правильно работающая программа — просто частный случай Undefined Behavior
Re[2]: Стандарты программирования на C++
От: _Winnie Россия C++.freerun
Дата: 12.11.05 18:39
Оценка: +1 :))
Здравствуйте, _Winnie, Вы писали:

Прочитал оглавление, книгу надо озаглавить "101 боян".
Правильно работающая программа — просто частный случай Undefined Behavior
Re[6]: Стандарты программирования на C++
От: z00n  
Дата: 12.11.05 18:59
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Здравствуйте, z00n, Вы писали:


КД>>>При генерации релизного кода, компилятор ругался, что значение, назначенное hr, не было использовано.

КД>>>HRESULT hr=S_OK;hr;

Z>>В "C++ Coding Standards, 101" есть и это


КД>По-моему мы же не "Муму", а именно эту книгу обсуждаем, из которой и было полученно вышеуказанное знание?


Пардон, правда вышло смешно При беглом прочтении, мне показалось, что вас озарило после Макконелла
Re[3]: Стандарты программирования на C++
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 13.11.05 13:38
Оценка: +1
Здравствуйте, _Winnie, Вы писали:

_W>Прочитал оглавление, книгу надо озаглавить "101 боян".


Большинство программистов на плюсах даже не задумывается над проблемами описываемыми в этой книге...
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[4]: Стандарты программирования на C++
От: Глеб Алексеев  
Дата: 14.11.05 08:59
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>
КД>HRESULT __stdcall TComObject::Method(...)
КД>{
КД> ::SetErrorInfo(0,NULL);

КД> HRESULT hr=S_OK;

КД> _OLE_TRY_
КД> {
КД>  //реализация
КД> }
КД> _OLE_CATCHES_

КД> return hr;
КД>}//Method
КД>


КД>При генерации релизного кода, компилятор ругался, что значение, назначенное hr, не было использовано.

Что-то я не пойму. Разве return hr — это не использование переменной hr?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Стандарты программирования на C++
От: degor Россия  
Дата: 14.11.05 09:04
Оценка:
Здравствуйте, _Winnie, Вы писали:

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


_W>Прочитал оглавление, книгу надо озаглавить "101 боян".

это для нас с вами баяны. а многие начинающие плюсовики, не все заголовки даже поймут.
если книжка написана хорошо, то ее смело можно рекомендовать — хороший и полный набор советов.
Re[5]: Стандарты программирования на C++
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 14.11.05 09:19
Оценка: 1 (1)
Здравствуйте, Глеб Алексеев, Вы писали:

КД>>При генерации релизного кода, компилятор ругался, что значение, назначенное hr, не было использовано.

ГА>Что-то я не пойму. Разве return hr — это не использование переменной hr?

Там была такая строка

Поскольку, как правило, в реализации значение hr менялось.


То есть
HRESULT hr=S_OK; //компилятор говорит, что вот это присваивание было лишним
//...
hr=<результат работы>;
//...
return hr;
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[3]: Стандарты программирования на C++
От: Stoune  
Дата: 14.11.05 22:34
Оценка:
Здравствуйте, _Winnie, Вы писали:

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


_W>Прочитал оглавление, книгу надо озаглавить "101 боян".

А мне понравилось, так как в одной книжке собрано то что было раскидано по многих и при этом за приемлемую цену.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[2]: Стандарты программирования на C++
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 01.12.05 20:03
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

АК>>Статья:

АК>>Герб Саттер, Андрей Александреску, Стандарты программирования на C++
Автор(ы): Герб Саттер, Андрей Александреску

Эта книга поможет новичку стать профессионалом, так как в ней
представлен сконцентрированный лучший опыт программистов на C++,
обобщенный двумя экспертами мирового класса. Начинающий программист
найдет в ней простые и понятные рекомендации для ежедневного
использования, подкрепленные примерами их конкретного применения
на практике.


КД>Рекомендую всем,


Вот еще одно открытие, благодаря этой книге, сделал. Правило 45 — "new и delete всегда должны разрабатываться вместе"

Никогда бы не подумал про описанный в этой главе принцип конструирования объектов в динамической памяти.

И, самое забавное, я потом напоролся на предупреждение компилятора VC7 об отсутствии симметричного оператора delete и вспомнил, что в этой книженции как раз что-то по этому поводу читал В моем случае ценным оказалась не сама эта глава, а исключение, описанное в конце этой главы.

А BCB ведь молчал как партизан!

Так что, еще раз, рекомендую всем сомневающимся найти в себе силы и почитать эту подборку правил.

PS. Особенно тем, у кого, как у меня, было темное детство
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.