Форум программистов, компьютерный форум, киберфорум
Наши страницы

Понимание для чего вообще нужны указатели? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проблема с pow http://www.cyberforum.ru/cpp-beginners/thread382561.html
#include <iostream> #include <conio.h> #include <math.h> using namespace std; class Triangle { public: int a,b,c;
C++ Считать массив строк из файла Например есть файл in.txt, с него нужно считать массив строк в мемо, а в другом мемо записать эти же строки в ascii кодах, например: в файле: abc bcd def в первом мемо должно отобразиться то же... http://www.cyberforum.ru/cpp-beginners/thread382557.html
глобал в библиотеке, не отображается в дебагере C++
Использую студию 2010, профешинал. Есть в статик библиотеке глобальная переменная, внутри этой библиотеке в дебагере ее поля вопросиками показываются, а хотя извлекается оттуда все нормально. Но...
C++ Очередь, С++
здраствуейте, помогите реализовать алгортитм :pardon: С++ , буду признателен =) Смоделировать очередь, в которой реализован такой механизм изъятия элемента из очереди: начало очереди всегда...
C++ Табуляция http://www.cyberforum.ru/cpp-beginners/thread382529.html
ПРивет всем передо мной стоит следующая задачка: Требуется вычислить значения yi заданной функции для ряда значений аргументов xi, i=1,…,N, при этом вычис-лив с точностью ε > 0 значения функций ряда...
C++ Дан текстовый файл f, содержащий буквы и целые числа. Выбрать все числа, которые делятся нацело на ... Дан текстовый файл f, содержащий буквы и целые числа. Выбрать все числа, которые делятся нацело на 2 и 4, но не делятся на 6. Записать эти числа в текстовый файл g, а все остальные числа – в... подробнее

Показать сообщение отдельно
Bers
Заблокирован
15.11.2011, 08:36
Цитата Сообщение от taras atavin Посмотреть сообщение
Ни чего, но если ты заранее решил убить объект в единственном месте при завершении программы, своего решения не менял, а прогу написал один, то про себя ты знаешь, что ни где в программе неожиджанного освобождения нет по факту, а это и есть гарантия. Но лучше так не делать.
Это не гарантия. Это устное, ничем не подкрепленное соглашение.
Ошибки в программах возникают по ничайности в непредсказуемых для самих программистов местах.

Сделали класс, протестировали.
А что значит протестировать? Значит погонять все методы класса со всеми возможными аргументами. Самыми кривыми. И посмотреть, как класс будит справляться.

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

Если программист думает: "клянусь! Что никогда не буду кормить классу указатели объектов созданных на стеке!" То это означает, что когда нибудь его класс обязательно крякнет именно потому, что он допустил устное соглашение, но не дал никаких гарантий.

Вот у меня был случай: сделал шаблонный низко-уровневый класс. И протестировал его вроде бы. Потом уже делал домашний проектик, и оказалось что в этом низко-уровневом классе есть баг (не качественно протестировал. Поленился)

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

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

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


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

Потратил бы на 10 минут больше времени на тестирование, мне не пришлось бы потом тратить 3 часа на поиски проблемы в более крупном проекте.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru