Conversation
Создание строки в GitHub.
| while (true) { | ||
| int choice = menu.showMainMenu(scanner); | ||
|
|
||
| if (choice == 1) { |
There was a problem hiding this comment.
Числам можно дать какие-нибудь имена в виде констант, это должно повысить читаемость кода
| } catch (RuntimeException | IOException e) { | ||
| System.out.println("Ошибка " + e.getMessage()); | ||
| } | ||
| } else if (choice == 3) { |
There was a problem hiding this comment.
С учётом того что команд всего три то построения логики на основе разветвлений выглядит приемлемо, однако в реальных приложениях команд сотни и более, поэтому полезно сразу формировать их хранения в виде карты. Такое решение более легко масштабируется
|
|
||
| public class CryptoProcessor { | ||
| public void encrypt(String inputFile, String outputFile, int key) throws IOException { | ||
| CryptoAction action = new Encrypt(); |
There was a problem hiding this comment.
Этот объект никогда не будет изменяться, поэтому лучше его вынести в поле и создавать только однажды в момент создания криптопроцессора
| } | ||
|
|
||
| public void decrypt(String inputFile, String outputFile, int key) throws IOException { | ||
| CryptoAction action = new Decrypt(); |
|
|
||
| public class Menu { | ||
| public int showMainMenu(Scanner scanner) { | ||
| System.out.println("-".repeat(70) + |
There was a problem hiding this comment.
Тут наверное пригодились тройные кавычки
|
|
||
| import java.util.Scanner; | ||
|
|
||
| public class ConsoleRunner { |
There was a problem hiding this comment.
То что приложение небольшое совсем не означает что ему не нужны пакеты, в реальных приложениях классов всё равно очень много, и поэтому привычка размещать все по пакетам очень хорошая
| DefaultFilePathBuilder filePathBuilder = new DefaultFilePathBuilder(); | ||
| InputParamsReader inputParamsReader = new InputParamsReader(scanner, filePathBuilder); | ||
| CryptoProcessor cryptoProcessor = new CryptoProcessor(); | ||
| CryptoApp cryptoApp = new CryptoApp(cryptoProcessor, menu, inputParamsReader, scanner); |
|
|
||
| public class Encrypt extends CryptoAction { | ||
| @Override | ||
| protected char transform(char c, int key) { |
There was a problem hiding this comment.
Кот в классах шифрования и дешифрования очень похож и по сути может быть вынесен в абстракцию
Большую часть времени разбирался с Гитом, как совершенно новой для меня технологией, с которой я ни разу не сталкивался. Позже хочу заново переработать весь код (для себя) на новом уровне, досконально изучив и проработав более совершенные подходы к построению архитектуры программы.