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

Является ли правилом хорошего тона отделение данных от логики? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ C++ классы и иерархия http://www.cyberforum.ru/cpp-beginners/thread1222754.html
Цветы, травы и овощи являются растениями. Создайте необходимые классы и иерархию . Помогите пожалуйста решить )) буду очень признателен
C++ Двухсвязный список (разбиение кода на файлы) Есть стандартный код реализации шаблонного двухсвязного списка: #include <iostream> using namespace std; template <typename T> struct Elem { // Любые данные http://www.cyberforum.ru/cpp-beginners/thread1222735.html
C++ Dll инъекция, получение значения по адресу
Провожу инъекцию dll, в ней нужно получить значение по адресу из этого же АП. float* mySpeed = (float *)0x0C25D2E4; // адрес где хранится нужное мне значение float value = *mySpeed; // получаю его float result; modf(value,&result); // получаю целую часть от нее ostringstream speed_var;
Очередная запись в реестр - изменения не вносятся C++
Всем привет! Столкнулся с такой проблемой - вот код на C++: #include <Windows.h> int WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { char* keyPath = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"; char* szString = "test string"; //C:\Windows\system32\userinit.exe, C:\Windows\Setup\State\Block.exe
C++ Создать телефонный справочник на С++ http://www.cyberforum.ru/cpp-beginners/thread1222672.html
Создать телефонный справочник для осуществления следующих операций: Добавление абонентов в базу. Удаление абонентов из базы. Модификация данных абонента. Поиск абонентов по телефонному номеру или фамилии. Распечатка в алфавитном порядке абонентов из заданного диапазона номеров или фамилий; например, для номеров диапазон может быть: 222222 - 333333, а для фамилий: Иванаускас - Иванов...
C++ Почему происходит утечка памяти? Добрый день, форумчане! Прошу помощи в вопросе - есть функция своп. void swap(CustomVector<T>& in) throw() { CustomVector<T> temp(*this); size = in.size; capacity = in.capacity; for (int i = 0; i < size; ++i) mas = in.mas; подробнее

Показать сообщение отдельно
Убежденный
Системный программист
Эксперт С++
15512 / 7010 / 1108
Регистрация: 02.05.2013
Сообщений: 11,442
Завершенные тесты: 1
05.07.2014, 13:06
Цитата Сообщение от ilja123 Посмотреть сообщение
Ну правд! Создал ток 2-а класса, открыл 5-ть вкладок и стал пытаться наладить взаимодействие между ними....
ilja123, я вполне понимаю Ваше недоумение по этому поводу.
Но дело в том, что большая часть всех этих практик с разделением на интерфейс и реализацию,
данные и логику, модель и представление и т.п. возникла далеко не на пустом месте.

В общем случае всегда полезно что-то от чего-то отделить.
Есть такое хорошее правило проектирования: "разделяй и властвуй".

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

Отделил данные от логики - значит, обеспечил себя возможностью тестировать их отдельно
друг от друга. Представьте, насколько сложнее создать тесты для программы, работающей с
данными, когда вся логика работы с БД и ее специфическими особенностями намертво
зашита в код. Да еще перемешана с обработкой UI. А такого г-нкода вокруг навалом.
В итоге нельзя нормально протестить ни работу с базой, ни сам UI, ни поменять БД или
оформление, все "прибито гвоздями" и размазано по куче файлов, нажмешь в одном месте -
вспучит в другом...

Но выгоды от вышеописанного можно почувствовать только на проектах не ниже некоторого
"веса", в других случаях будет нейтрально или во вред.

И еще хочется сказать, что слепое следование всевозможным правилам хорошего тона, без
понимания того, что за ними стоит - опасная практика. Лучше писать так, как знаешь, в
надежде со временем выработать свой стиль и научиться хорошо проектировать программы,
чем тупо копировать чьи-то идеи, в надежде, что они принесут пользу "автоматически".
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru