Форум программистов, компьютерный форум CyberForum.ru

Coding style или нет - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ потоки выполнения c++ http://www.cyberforum.ru/cpp-beginners/thread443624.html
В чем вся соль потоков(нитей)? Порекомендуйте мне литературу или ссылку дайте на годную статью, а то ничего не понял
C++ Работа с консольным окном Здравствуйте! Может ли программа узнать размеры консольного окна? (Требуется что-то вроде окна в Турбо паскале 7.0.) А так же может ли сама программа изменять шрифт и размер шрифта в консольном окне? Цвет фона и шрифта? И если вы знакомы с функцией system() и знаете местечко с подробным описанием этой функции, выложите, пожалуйста. http://www.cyberforum.ru/cpp-beginners/thread443622.html
C++ Написать класс для эффективной работы со строками
Написать класс для эффективной работы со строками, что позволяет форматировать и сравнивать строки, хранить в строках числовые значения и извлекать их. Для этого необходимо реализовать: • перегруженные операции присвоения и конкатенации; • операции сравнения и приведения типов; • преобразование в число любого типа; • форматный вывод строки. Написать программу, демонстрирующую работу с этим...
Вывести несколько строк в файл C++
Условие #include <iostream> #include <fstream> #include <iomanip> #include <cstring> const int N=100; std :: ifstream input; std :: ofstream output;
C++ Создайте общий массив, из данного массива и точно такого же но другого размера, и отсортируйте по уменьшению. http://www.cyberforum.ru/cpp-beginners/thread443580.html
Создайте общий массив, из данного массива и точно такого же но другого размера, и отсортируйте по уменьшению.
C++ Определите сумму элементов массива, расположенных после элемента равного минимуму. Определите сумму элементов массива, расположенных после элемента равного минимуму. подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16844 / 5265 / 323
Регистрация: 30.03.2009
Сообщений: 14,159
Записей в блоге: 26
10.02.2012, 14:23     Coding style или нет
Цитата Сообщение от Bers Посмотреть сообщение
Ну ежели, это не критично для всего приложения - почему бы и нет? Они жить не мешают. А вот красивость - это бонус
А это и есть причина появления гавнокода. Тут оказалось не совсем критичным, там окзалось не совсем критичным. А потом наберётся этих ситуаций целая куча и программа начинает работать в два раза медленнее и жрать памяти в два раза больше

Цитата Сообщение от Bers Посмотреть сообщение
Если данному куску кода не нужен данный объект, то нет ни одной причины вообще создавать этот ненужный объект.
Дык проблема в том, что он был нужен чуть ранееи дальше появляется точка, где от объекта уже можно избавиться, т.к. по результату его использования было вычислено нужное значение, которое будет использовано в цикле из миллиона итераций. Я использую в примере string весьма условно (просто как некий экземпляр некоего класса)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void func1 (int x1, int x2, int x3)
{
  std::string str;
 
  str += x1;
  str += x2;
  str += x3;
 
  int len = str.length();
 
  // Здесь str нам больше не нужен. Но поскольку у тебя принципиально нет никаких
  // переменных влексических блоках, то на время работы цикла память, отжираемая
  // экземпляром str, будет необоснованно болтаться как использованная
 
  for (i = 0; i < 1000000; i++)
    func2 (len);
}
Далее по твоей логике код работы с str надо выносить в отдельную функцию, в которую передать три параметра. Ну это в моём простом случае параметрв три, а может быть их и больше. Могут быть промежуточные значения, которые используются в виде локалов данной функции, которые придётся передавать в функцию. Могут быть несколько объектов типа str. И в итоге из-за принципиальных соображений один нормально читаемый код в виде одной нормально читаемой функции првреатится в десяток функций, в которых ориентироваться будет намного сложнее.

Добавлено через 4 минуты
Цитата Сообщение от AzaKendler Посмотреть сообщение
но возможность есть
Так твой код не рабочий. Он работает по счастливой случайности, что в дестркуторе ты вставил "_ptr=0", из-за чего повторный вызов "delete [] _ptr" не сломался. А ты воткни в деструктор печать, работу с файлом или чем-нибудь ещё, что имеет внешнее проявление. И увидишь, что завершающие действия у тебя выполняются два раза вместо одного
 
Текущее время: 10:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru