История изменений
Исправление hobbit, (текущая версия) :
Как выше написали – зависит от программы. А заодно и от фреймворка. К примеру, то, что в Qt понимают под Model-View, имеет некоторые отличия от классического MVP. Другими словами, ГОСТа или какого-нибудь ISO xxxxx, который предписывает тебе, что такое ядро в программе, нет.
В качестве примера одного из вариантов организации можешь глянуть мой проект. Я сначала не задавался целью сделать отдельное ядро. Но при этом старался не жарить мух вместе с котлетами и проектировал код по возможности аккуратно. В итоге у меня практически сами собой образовались некоторые «ядрёные» вещи, которые в репе по ссылке я сложил в каталог core. Туда вошли общие структуры данных, константы, некоторые алгоритмы и набор классов экспорта-импорта в разные форматы файлов (core/formats). И никакого GUI, разумеется.
На втором уровне – то, что лежит в model. (Это как раз в кутешном понимании Model-View.) Плюс туда же пошло кое-что, что зависит от GUI, но не зависит от виджетов (не скажу, что это правильное решение, но учитывая, что начинал я с Qt4, на её структуру это легло хорошо).
Наконец, на верхнем уровне GUI на QtWidgets, каталог app. Я планировал рядом с ним положить ещё каталог app-qml и сварганить в нём альтернативный GUI на QML с теми же core и model. Но к сожалению, до QML мои потные ручонки ещё не дотянулись. Зато есть пример консольной программы contconv, основанной на том же core.
Это не образец «как надо делать», просто один из примеров, как можно сделать, чтобы держать исходники в порядке. Не единственный и скорее всего не самый лучший — но в моём случае он себя оправдал.
Исходная версия hobbit, :
Как выше написали – зависит от программы. А заодно и от фреймворка. К примеру, то, что в Qt понимают под Model-View, имеет некоторые отличия от классического MVP. Другими словами, ГОСТа или какого-нибудь ISO xxxxx, который предписывает тебе, что такое ядро в программе, нет.
В качестве примера одного из вариантов организации можешь глянуть мой проект. Я сначала не задавался целью сделать отдельное ядро. Но при этом старался не варить мух вместе с котлетами и проектировал код по возможности аккуратно. В итоге у меня практически само собой образовались некоторые «ядрёные» вещи, которые в репе по ссылке я сложил в каталог core. Туда вошли общие структуры данных, константы, некоторые алгоритмы и набор классов экспорта-импорта в разные форматы файлов (core/formats). И никакого GUI, разумеется.
На втором уровне – то, что лежит в model. (Это как раз в кутешном понимании Model-View.) Плюс туда же пошло кое-что, что зависит от GUI, но не зависит от виджетов (не скажу, что это правильное решение, но учитывая, что начинал я с Qt4, на её структуру это легло хорошо).
Наконец, на верхнем уровне GUI на QtWidgets, каталог app. Я планировал рядом с ним положить ещё каталог app-qml и сварганить в нём альтернативный GUI на QML с теми же core и model. Но к сожалению, до QML мои потные ручонки ещё не дотянулись. Зато есть пример консольной программы contconv, основанной на том же core.
Это не образец «как надо делать», просто один из примеров, как можно сделать, чтобы держать исходники в порядке. Не единственный и скорее всего не самый лучший — но в моём случае он себя оправдал.