Repository navigation
Выполненное задание к 7 спринту - #1
develop-mdv wants to merge 1 commit into
Conversation
| archives.forEach { archive -> | ||
| menuItems.add(archive.name to { NoteManager(archive).start() }) | ||
| } | ||
| menuItems.add("Выход" to { exitProcess(0) }) |
There was a problem hiding this comment.
exitProcess лучше не использовать для завершения программы - лучше дать программе завершиться естественным путём, вернув управление в точку старта - функцию main
| val name = readLine()?.trim() ?: "" | ||
| if (name.isEmpty()) { | ||
| println("Имя архива не может быть пустым.") | ||
| return | ||
| } |
There was a problem hiding this comment.
Код, связанный со считыванием непустой строки, можно вынести в отдельную функцию и переиспользовать в трёх местах
| val choice = input.toIntOrNull() | ||
| if (choice == null || choice !in items.indices) { | ||
| println("Ошибка: введите корректный номер пункта меню.") | ||
| continue | ||
| } |
There was a problem hiding this comment.
Аналогично можно вынести в отдельную функцию код, считывающий с консоли целочисленное значение
| @@ -0,0 +1,2 @@ | |||
| data class Note(val name: String, val text: String) | |||
| data class Archive(val name: String, val notes: MutableList<Note> = mutableListOf()) No newline at end of file | |||
There was a problem hiding this comment.
В data классах не рекомендуется хранить мьютабельные данные (в данном случае MutableList), т.к. в многопоточных средах могут возникнуть проблемы с такими объектами, а именно с доступом к чтению и записи изменяемых полей. У data классов автоматически генерируется функция copy, которую можно использовать для изменения полей объекта с помощью его копирования
Выполненное задание к 7 спринту