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

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

Восстановить пароль Регистрация
 
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
04.07.2014, 23:34     Является ли правилом хорошего тона отделение данных от логики? #1
Скажите, отделение данных от логики действительно явл. правилом хорошего тона в с++ ? Что-то я не видел, чтобы в других яз. это практиковалось. По мне, так это дурдом! Только для работы 1-го класса, нужно задействовать 3-и файла. В одном описать, в другом реализовать, в 3-м использовать... Зачем так усложнять????
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2014, 23:34     Является ли правилом хорошего тона отделение данных от логики?
Посмотрите здесь:

C++ std:: - правило хорошего тона,или?
Поиск хорошего учебника! C++
Вопрос "хорошего тона", "стиля" в программировании - правильное использование #include C++
C++ Сортировка с усложненным правилом
Поиск хорошего урока по C++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6420 / 3794 / 877
Регистрация: 30.01.2014
Сообщений: 6,584
04.07.2014, 23:38     Является ли правилом хорошего тона отделение данных от логики? #2
ilja123, это везде используется. См. тут.
Насчет усложнения - читай тут.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,039
04.07.2014, 23:40     Является ли правилом хорошего тона отделение данных от логики? #3
Цитата Сообщение от ilja123 Посмотреть сообщение
Скажите, отделение данных от логики
Не понял, переведи
Цитата Сообщение от ilja123 Посмотреть сообщение
Только для работы 1-го класса, нужно задействовать 3-и файла. В одном описать, в другом реализовать, в 3-м использовать... Зачем так усложнять????
вот когда у тебя будет 100500 классов и все друг с другом взаимодействуют,и нужно исправить один
поймешь что так удобней
другой пример создал класс, настолько удобный что решил его еще раз использовать, а может и не раз
как выдерешь его из готового проекта
а так взял два файла и перенес в новый проект
или вообще скомпилил из этого класса библиотеку
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
04.07.2014, 23:41  [ТС]     Является ли правилом хорошего тона отделение данных от логики? #4
а по существу???
DrOffset
6420 / 3794 / 877
Регистрация: 30.01.2014
Сообщений: 6,584
04.07.2014, 23:44     Является ли правилом хорошего тона отделение данных от логики? #5
Цитата Сообщение от ilja123 Посмотреть сообщение
а по существу???
Разве не по существу? Потрать 10 минут времени и прочитай статью. Часть вопросов должна отпасть. Если после этого еще останется что спросить, приходи сюда и задавай.
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
04.07.2014, 23:45  [ТС]     Является ли правилом хорошего тона отделение данных от логики? #6
Цитата Сообщение от ValeryS Посмотреть сообщение
как выдерешь его из готового проекта
тут нет вопросов Я спрашиваю зачем в одном файле делать только описание, а в другом реализацию? Чем это упрощает?? Если у меня 100500 классов То над будет работать с 201000 файлов В чем преимущество???

Добавлено через 1 минуту
Цитата Сообщение от DrOffset Посмотреть сообщение
Потрать 10 минут времени и прочитай статью.
Я вам сейчас отзыв накатаю за 10 минут за флуд
DrOffset
6420 / 3794 / 877
Регистрация: 30.01.2014
Сообщений: 6,584
04.07.2014, 23:53     Является ли правилом хорошего тона отделение данных от логики? #7
Вот как ты вопрос сформулировал, такой и ответ получил.
Разница у этого вопроса и у первого - колоссальная. От формулировки зависит то, на что был получен ответ.

Цитата Сообщение от ilja123 Посмотреть сообщение
Я спрашиваю зачем в одном файле делать только описание, а в другом реализацию? Чем это упрощает??
По этому вопросу все гораздо проще, если писать все в одном файле получим грандиозное замедление компиляции из-за специфики сборки в С\С++- это во-первых. Во-вторых, при правильном проектировании интерфейсов, не смотря на то, что файлов много, достаточно посмотреть на объявление класса, чтобы понять как им пользоваться, поэтому лазить во второй файл (с реализацией), зачастую, уже не нужно.
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
04.07.2014, 23:55  [ТС]     Является ли правилом хорошего тона отделение данных от логики? #8
Оуу блиин Ну канеш!! Я про компиляцию забыл!!!!!!!!!! Я прост на Шарпе посидел Отупел немног Сорри
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,039
05.07.2014, 00:02     Является ли правилом хорошего тона отделение данных от логики? #9
Цитата Сообщение от ilja123 Посмотреть сообщение
Я спрашиваю зачем в одном файле делать только описание, а в другом реализацию?
ты имеешь ввиду c и h файлы?
тогда так
h файлы подключаются include, на самом деле не подключаются а "вписываются"
макрос include заносит на свое место содержимое файла
а c файл это единица трансляции
они не обязательно вместе все компилируются

и чтобы компилятор в другом файле знал как устроен твой класс его описание и "вписывается" include с заголовочным файлом
ты можешь не использовать include, а в каждом файле где используется твой класс писать заново описание класса, не думаю что это было бы удобней
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
05.07.2014, 11:14     Является ли правилом хорошего тона отделение данных от логики? #10
Цитата Сообщение от ilja123 Посмотреть сообщение
Скажите, отделение данных от логики действительно явл. правилом хорошего тона в с++ ?
Это называется модульным программированием. Подробно см. статью в Википедии.
Его основной принцип: программа разбивается на модули, а каждый модуль - на интерфейс и реализацию.
Цитата Сообщение от ilja123 Посмотреть сообщение
Что-то я не видел, чтобы в других яз. это практиковалось.
История концепции модулей как единиц компиляции восходит к языкам Фортран II и Кобол, то есть, к концу 1950-х годов.
Языки, формально поддерживающие концепцию модулей: IBM S/360 Assembler, Кобол, RPG, ПЛ/1, Ада, D, F (англ.), Фортран, Haskell, Blitz BASIC, OCaml, Паскаль, ML, Модула-2, Оберон, Компонентный Паскаль, Zonnon, Erlang, Perl, Python и Ruby.
<из той же статьи в Википедии>.
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
05.07.2014, 11:41     Является ли правилом хорошего тона отделение данных от логики? #11
Цитата Сообщение от ilja123 Посмотреть сообщение
Скажите, отделение данных от логики действительно явл. правилом хорошего тона в с++ ? Что-то я не видел, чтобы в других яз. это практиковалось. По мне, так это дурдом! Только для работы 1-го класса, нужно задействовать 3-и файла. В одном описать, в другом реализовать, в 3-м использовать... Зачем так усложнять????
Это практикуется во всех языках ( ну, конечно где средства языка это позволяют ). Пока сам шишек не набьешь на больших проектах - не поймешь. А на лабах-то, в которых три с половиной строчки кода, понятно дело что профит от всего этого не очевиден
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
05.07.2014, 11:53  [ТС]     Является ли правилом хорошего тона отделение данных от логики? #12
Цитата Сообщение от Mr.X Посмотреть сообщение
к концу 1950-х годов
Кого волнует, что было в 50-х годах?

Цитата Сообщение от Voivoid Посмотреть сообщение
Это практикуется во всех языках
В каких?
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
05.07.2014, 11:58     Является ли правилом хорошего тона отделение данных от логики? #13
Цитата Сообщение от ilja123 Посмотреть сообщение
В каких?
Да бери практически любой созданный с конца 80-х
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
05.07.2014, 12:01  [ТС]     Является ли правилом хорошего тона отделение данных от логики? #14
Ну и как это делается с C# например?
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
05.07.2014, 12:27     Является ли правилом хорошего тона отделение данных от логики? #15
Цитата Сообщение от ilja123 Посмотреть сообщение
Ну и как это делается с C# например?
При помощи ООП, в частности интерфейсов

http://ru.wikipedia.org/wiki/%D0%A2%...83%D1%80%D0%B0

http://ru.wikipedia.org/wiki/Model-View-Controller
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 981
Регистрация: 02.05.2013
Сообщений: 10,297
Завершенные тесты: 1
05.07.2014, 12:38     Является ли правилом хорошего тона отделение данных от логики? #16
Цитата Сообщение от ilja123 Посмотреть сообщение
По мне, так это дурдом!
Вы еще PIMPL не видели !
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
05.07.2014, 12:43  [ТС]     Является ли правилом хорошего тона отделение данных от логики? #17
Voivoid,
Может хватит???

Добавлено через 1 минуту
Цитата Сообщение от Убежденный Посмотреть сообщение
Вы еще PIMPL не видели !
Ну правд! Создал ток 2-а класса, открыл 5-ть вкладок и стал пытаться наладить взаимодействие между ними....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2014, 13:06     Является ли правилом хорошего тона отделение данных от логики?
Еще ссылки по теме:

О правилах хорошего тона в C++: изменение данных из private секции класса А в классе В через указатель C++
C++ Правило хорошего тона: отделение ввода-вывода C++
Разделение данных и логики и ООП C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 981
Регистрация: 02.05.2013
Сообщений: 10,297
Завершенные тесты: 1
05.07.2014, 13:06     Является ли правилом хорошего тона отделение данных от логики? #18
Цитата Сообщение от ilja123 Посмотреть сообщение
Ну правд! Создал ток 2-а класса, открыл 5-ть вкладок и стал пытаться наладить взаимодействие между ними....
ilja123, я вполне понимаю Ваше недоумение по этому поводу.
Но дело в том, что большая часть всех этих практик с разделением на интерфейс и реализацию,
данные и логику, модель и представление и т.п. возникла далеко не на пустом месте.

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

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

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

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

И еще хочется сказать, что слепое следование всевозможным правилам хорошего тона, без
понимания того, что за ними стоит - опасная практика. Лучше писать так, как знаешь, в
надежде со временем выработать свой стиль и научиться хорошо проектировать программы,
чем тупо копировать чьи-то идеи, в надежде, что они принесут пользу "автоматически".
Yandex
Объявления
05.07.2014, 13:06     Является ли правилом хорошего тона отделение данных от логики?
Ответ Создать тему
Опции темы

Текущее время: 20:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru