0

К примеру у меня есть проект на Qt, есть main.cpp, mainform.h mainform.cpp. В mainform.cpp я объявляю какие либо методы по нажатию кнопок и тд. Как правильно разбивать программу на модули?(h и cpp). Если у меня есть функции сохранения/загрузки файлов, то мне нужно их вынести в отдельный header/cpp под названием FileManagment? Сам уже запутался, заранее благодарю!

  • 1
    h и cpp - это не модули, см. https://ru.stackoverflow.com/questions/876163/c-%d0%a0%d0%b0%d0%b7%d0%bd%d0%b8%d1%86%d0%b0-%d0%bc%d0%b5%d0%b6%d0%b4%d1%83-%d0%b7%d0%b0%d0%b3%d0%be%d0%bb%d0%be%d0%b2%d0%be%d1%87%d0%bd%d1%8b%d0%bc-%d0%b8-%d1%84%d0%b0%d0%b9%d0%bb%d0%be%d0%bc-%d1%80%d0%b5%d0%b0%d0%bb%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d0%b8/876207#876207 Разбитие программы на заголовочные файлы / файлы реализации и разбитие программы на модули - не одно и то же. – user7860670 Jan 17 '20 at 07:30

2 Answers2

0

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

-1

Вы говорите о косметическом оформлении. В этом плане если функции/классы не будут использоваться многократно, не важно где и как все будет содержаться - можете ничего не разбивать, а можете хоть для каждой функции отдельный файл сделать. Однако если к примеру ваши функции чтения/записи занимают длительное время, желательно вынести их в отдельный поток чтобы не замораживать на время обработки основной eventloop (интерфейс будт "висеть" пока работает какая-то функция). Как вынести в отдельный поток - читайте про QThread. Например тут https://habr.com/ru/post/150274/

  • Что? Зачем вы от файлов к multi-thread пришли? Автор не спрашивал про реализацию своей функции чтения/записи! Или у Вас лишних букв много? – Небывалый Jan 17 '20 at 06:00