Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 507
1

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

04.07.2014, 23:34. Показов 3851. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Скажите, отделение данных от логики действительно явл. правилом хорошего тона в с++ ? Что-то я не видел, чтобы в других яз. это практиковалось. По мне, так это дурдом! Только для работы 1-го класса, нужно задействовать 3-и файла. В одном описать, в другом реализовать, в 3-м использовать... Зачем так усложнять????
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2014, 23:34
Ответы с готовыми решениями:

Правило хорошего тона: отделение ввода-вывода C++
Добрый день. Собственно про MVC модель препод рассказывает, но на пальцах, понять сложно мне...

О правилах хорошего тона в C++: изменение данных из private секции класса А в классе В через указатель
#include <iostream> using namespace std; class A { int *a; public: A()

Правила хорошего тона?
У меня есть много окон. Экземпляры моделей для них я храню в самом App. Пример: public partial...

Правильно хорошего тона
Предлагаю обсудить насущные вопросы связанные с использование HTML5!!! Как вы считаете хорошо ли...

17
18834 / 9836 / 2405
Регистрация: 30.01.2014
Сообщений: 17,273
04.07.2014, 23:38 2
ilja123, это везде используется. См. тут.
Насчет усложнения - читай тут.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,519
04.07.2014, 23:40 3
Цитата Сообщение от ilja123 Посмотреть сообщение
Скажите, отделение данных от логики
Не понял, переведи
Цитата Сообщение от ilja123 Посмотреть сообщение
Только для работы 1-го класса, нужно задействовать 3-и файла. В одном описать, в другом реализовать, в 3-м использовать... Зачем так усложнять????
вот когда у тебя будет 100500 классов и все друг с другом взаимодействуют,и нужно исправить один
поймешь что так удобней
другой пример создал класс, настолько удобный что решил его еще раз использовать, а может и не раз
как выдерешь его из готового проекта
а так взял два файла и перенес в новый проект
или вообще скомпилил из этого класса библиотеку
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 507
04.07.2014, 23:41  [ТС] 4
а по существу???
0
18834 / 9836 / 2405
Регистрация: 30.01.2014
Сообщений: 17,273
04.07.2014, 23:44 5
Цитата Сообщение от ilja123 Посмотреть сообщение
а по существу???
Разве не по существу? Потрать 10 минут времени и прочитай статью. Часть вопросов должна отпасть. Если после этого еще останется что спросить, приходи сюда и задавай.
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 507
04.07.2014, 23:45  [ТС] 6
Цитата Сообщение от ValeryS Посмотреть сообщение
как выдерешь его из готового проекта
тут нет вопросов Я спрашиваю зачем в одном файле делать только описание, а в другом реализацию? Чем это упрощает?? Если у меня 100500 классов То над будет работать с 201000 файлов В чем преимущество???

Добавлено через 1 минуту
Цитата Сообщение от DrOffset Посмотреть сообщение
Потрать 10 минут времени и прочитай статью.
Я вам сейчас отзыв накатаю за 10 минут за флуд
0
18834 / 9836 / 2405
Регистрация: 30.01.2014
Сообщений: 17,273
04.07.2014, 23:53 7
Вот как ты вопрос сформулировал, такой и ответ получил.
Разница у этого вопроса и у первого - колоссальная. От формулировки зависит то, на что был получен ответ.

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

и чтобы компилятор в другом файле знал как устроен твой класс его описание и "вписывается" include с заголовочным файлом
ты можешь не использовать include, а в каждом файле где используется твой класс писать заново описание класса, не думаю что это было бы удобней
1
Эксперт С++
3224 / 1751 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
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.
<из той же статьи в Википедии>.
0
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
05.07.2014, 11:41 11
Цитата Сообщение от ilja123 Посмотреть сообщение
Скажите, отделение данных от логики действительно явл. правилом хорошего тона в с++ ? Что-то я не видел, чтобы в других яз. это практиковалось. По мне, так это дурдом! Только для работы 1-го класса, нужно задействовать 3-и файла. В одном описать, в другом реализовать, в 3-м использовать... Зачем так усложнять????
Это практикуется во всех языках ( ну, конечно где средства языка это позволяют ). Пока сам шишек не набьешь на больших проектах - не поймешь. А на лабах-то, в которых три с половиной строчки кода, понятно дело что профит от всего этого не очевиден
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 507
05.07.2014, 11:53  [ТС] 12
Цитата Сообщение от Mr.X Посмотреть сообщение
к концу 1950-х годов
Кого волнует, что было в 50-х годах?

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

http://ru.wikipedia.org/wiki/%... 1%80%D0%B0

http://ru.wikipedia.org/wiki/Model-View-Controller
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
05.07.2014, 12:38 16
Цитата Сообщение от ilja123 Посмотреть сообщение
По мне, так это дурдом!
Вы еще PIMPL не видели !
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 507
05.07.2014, 12:43  [ТС] 17
Voivoid,
Может хватит???

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

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

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

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

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

И еще хочется сказать, что слепое следование всевозможным правилам хорошего тона, без
понимания того, что за ними стоит - опасная практика. Лучше писать так, как знаешь, в
надежде со временем выработать свой стиль и научиться хорошо проектировать программы,
чем тупо копировать чьи-то идеи, в надежде, что они принесут пользу "автоматически".
3
05.07.2014, 13:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.07.2014, 13:06
Помогаю со студенческими работами здесь

Правила хорошего тона в программировании в VB (+++)
Господа программисты, давайте обсудим правила хорошего тона программирование в VB. Например у меня...

Механизмы безопасности (и правила хорошего тона)
Добрый день Уважаемые! Заранее прошения за возможно слишком общую тему, но видимо ввиду...

Правила хорошего тона (грамотный код)
Вопросы хорошего тона, грамотности и красоты кода. Лечение быдлокода. Лично у меня пока что...

проверить на соответствие правилам хорошего тона=)
ну в общем исходное задание - MDI текстовый редактор (формат rtf) общий план который мне кажется...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru