![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| archimed7592 |
|
||||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Добавлено через 46 секунд Ыыыы, где и чего я передёрнул? 0_о С чем ты не согласен? Добавлено через 1 минуту и 51 секунду
Проверка на 0 и проверка на валидность - разные вещи... Добавлено через 7 минут и 7 секунд
Нафиг нужно было заводить константы в .hpp, когда здесь проверяешь по значению? Добавлено через 8 минут и 59 секунд Ааа, и ещё: С++ - не Дельфи... В С++ можно реализовывать разные ф-ции в разных файлах, т.е., можно было бы хотя бы все определения dbfTable::* вынести в отдельный файл, а ещё лучше разбить его потом на несколько файлов(разделив связанные по смыслу ф-ции). -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||||
|
|||||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
delete для нулевого указателя - вполне корректная операция -------------------- qqq |
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 2 Всего: 58 |
И правда... Только вот с каких пор ? Точно помню что сегфолты ловил на таком |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
С оч древних - ещё в first edition(2003) было. Не знаю, как в ANSI-96(или какого он там года?). -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| GrayCardinal |
|
||||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 2 Всего: 58 |
archimed7592,
maxim1000, А я долго не парился на эту тему
Добавлено через 1 минуту и 28 секунд
Так недавно ? |
||||
|
|||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
только, в частности, мелкософтский компилер тратит на "удаление" нулевого указателя гдето 11 тактов процессора вместо одной проверки, если напишешь сам GrayCardinal, ты когда-нить работал с большими переменными? зачем их объявлять в начале, если они по ходу дела могут не понадобиться? только время (процессорное) потратишь... или если переменная в конструкторе делает что-то немелкое по времени (к примеру, ищет сервер) |
|||
|
||||
| tatan |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 31.10.2007 Репутация: нет Всего: 1 |
про "Еще проще" - записал
про const - запомнил Спасибо |
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 2 Всего: 58 |
Alek86,
Если по ходу дела могут не понадобиться - лучше делать их динамическими. А если так, в центре функции, то читабельность стремится к нулю... Суть "объявления" переменных в начале - это просто меняется цифра в одной команде. А если в конструкторе что-то делается "долго", то опять таки лучше динамически ... Добавлено через 2 минуты и 50 секунд Alek86, О чём спорим ? Это сообщение отредактировал(а) GrayCardinal - 6.11.2007, 19:35 |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
ну, еще стек зря заполняется, если я правильно понимаю...
хотя, предупрежу, что тут я не эксперт и доводы привел не свои, а из "ленивого программирования"
чувствуется закоренелый сишник. с такими сиплюсплюсникам лучше не спорить - ато опять религ. война посреди темы разгорится Добавлено через 3 минуты и 40 секунд опять левый вопрос насколько позволительно с точки зрения "общепринятого стиля" инклудить cpp в другие cpp? или 1 cpp <-> 1 h ? |
|||
|
||||
| archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Вот даже как... 0_о
Переменная должна быть как можно ближе к месту первого использования, а ещё лучше, если это возможно обернуть место её использования в отдельный scope. И ещё, как это читабельность может стремиться к нулю, если средний размер ф-ции 10-25 строк? И стражей(boost::mutex, к примеру)? Тоже динамически? А если исключение? Я вообще не помню, когда в последний раз писал delete(это я о том, что если я что-то динамически и выделяю, то есть нечто статическое(вроде shared_ptr), которое обязательно удалит это). -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
| tatan |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 31.10.2007 Репутация: нет Всего: 1 |
to archimed759:
"я бы добавил explicit к конструктору" - про explicit пока ничего не знаю.Буду читать. про копировщик и присваивание - записал, не знаю правда как это все сделать "char* itsTableName; // лучше использовать std::string" - здесь затупил, спасибо "fstream *itsTableFile; // зачем создавать поток динамически? 0_о" - извращение, уже понял "if (!itsTableFile) // не нужно ничего проверять - если new не удасться выделить память он бросит исключение" - так было в книжке, пока не читал про exception s, наверняка можно писать свои обработчики исключений, но это впереди "Нафиг нужно было заводить константы в .hpp, когда здесь проверяешь по значению?" - един-е объяснение - затупил to GrayCardinal: "А я долго не парился на эту тему smile" - пока эта конструкция с define не очень понятня, думаю разбирусь Спасибо |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Суть сказанного была не про исключения а про то, что new(в той форме в которой ты его написал) никогда не вернёт 0. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| tatan |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 31.10.2007 Репутация: нет Всего: 1 |
понял, и скорее всего в книжке было както так
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
та я про free как-то и не говорил а в своём посте специально написал delete -------------------- qqq |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
И, тем не менее, free так же ничего не сделает в случае с нулевым указателем. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |