Думаю пришло время тебе познакомится с тестированием, т.к. в процессе доработки приложения ты вносишь довольно много изменений и было бы неплохо иметь возможность проверить, что очередное изменение не сломало программу.
Чтобы тебе не пришлось сильно закапываться во все дебри, давай представим, что мы команда разработчиков. Ты будешь разработчиком, а я твоим техлидом. Т.е. твоей задачей будет разработка программы, а моей - помощь по технической части, проработке архитектурных решений, ну и помогу тебе с настройкой проекта.
Добавь меня в коллабораторы проекта, я тебе вкоммичу небольшой апдейт проекта (самые базовые вещи, типа список зависимостей, пару тестов и т.д.)
Что нужно будет сделать:
1. Сделать модуль вместо скрипта
# добавить главную функцию
def main():
version = '0.1.2'
...
new_data.add_to_db()
# добавить возможность запуска модуля как скрипта
# в конец файла добавь
if __name__ == '__main__':
main()
После этого все продолжит работать как и раньше, но теперь логика нашей программы находится в функции main.
2. Определить какие данные тебе нужно сохранить
Например сейчас ты сохраняешь 'Стоимость коммунального потребления с человека' и ИТОГО и т.д. Действительно ли это нужно хранить? Возможно это ответственность программы вычислять эти данные, а сохранять только тариф, потребление, кол-во комнат и людей.
3. Выделить классы предметной области
Те классы которые есть сейчас не относятся к предметной области.
У тебя же должно быть что-то вроде: Apartment, Room, Tariff, ElectricMeter, ConsumptionReport и т.д.
5. Ввод данных
Твои классы доменной области ничего не должны знать как данные к ним приходят.
Т.е. нужно написать отдельную функцию или класс которая умеет прочитать данные из консоли (спросить у пользователя) и создать класс Apartment (как я понимаю это твой самый главный класс, который будет в себе уже содержать данные по комнатам).
6. Тесты
Прямо сейчас программа нетестопригодна. Тебе нужно сделать пункт 1, и после этого можно будет провести серию небольших рефакторингов (улучшений кода), чтобы была возможность писать тесты.
Что я предлагаю:
Дай мне доступ на изменения в этом репозитории.
Выполни пункт 1.
В следующий раз когда мы созвонимся, я покажу как подготовить программу к тестированию, и мы сразу изменим код и напишем один тест.
Думаю пришло время тебе познакомится с тестированием, т.к. в процессе доработки приложения ты вносишь довольно много изменений и было бы неплохо иметь возможность проверить, что очередное изменение не сломало программу.
Чтобы тебе не пришлось сильно закапываться во все дебри, давай представим, что мы команда разработчиков. Ты будешь разработчиком, а я твоим техлидом. Т.е. твоей задачей будет разработка программы, а моей - помощь по технической части, проработке архитектурных решений, ну и помогу тебе с настройкой проекта.
Добавь меня в коллабораторы проекта, я тебе вкоммичу небольшой апдейт проекта (самые базовые вещи, типа список зависимостей, пару тестов и т.д.)
Что нужно будет сделать: 1. Сделать модуль вместо скрипта
После этого все продолжит работать как и раньше, но теперь логика нашей программы находится в функции
main
.2. Определить какие данные тебе нужно сохранить Например сейчас ты сохраняешь 'Стоимость коммунального потребления с человека' и ИТОГО и т.д. Действительно ли это нужно хранить? Возможно это ответственность программы вычислять эти данные, а сохранять только тариф, потребление, кол-во комнат и людей.
3. Выделить классы предметной области Те классы которые есть сейчас не относятся к предметной области. У тебя же должно быть что-то вроде: Apartment, Room, Tariff, ElectricMeter, ConsumptionReport и т.д.
4. Загрузка/сохранение данных Нужно выделить отдельный класс
Database
для загрузки и сохранения данных. Для начала он будет использовать либо pickle, либо shelve. https://docs.python.org/3/library/pickle.html https://docs.python.org/3/library/shelve.html5. Ввод данных Твои классы доменной области ничего не должны знать как данные к ним приходят. Т.е. нужно написать отдельную функцию или класс которая умеет прочитать данные из консоли (спросить у пользователя) и создать класс Apartment (как я понимаю это твой самый главный класс, который будет в себе уже содержать данные по комнатам).
6. Тесты Прямо сейчас программа нетестопригодна. Тебе нужно сделать пункт 1, и после этого можно будет провести серию небольших рефакторингов (улучшений кода), чтобы была возможность писать тесты.
Что я предлагаю: Дай мне доступ на изменения в этом репозитории. Выполни пункт 1. В следующий раз когда мы созвонимся, я покажу как подготовить программу к тестированию, и мы сразу изменим код и напишем один тест.