Страницы

Поиск по вопросам

понедельник, 8 июля 2019 г.

Java - чистый код на примере простого цикла

Сразу скажу - в java начинающий, как сделать цикл более "грамотным" и "логичным"?
public void scanner(EnigmaService enigma, String cypher_mode){
//enigma - обьект, который имеет метод enchiper i deschiper // cypher_mode - "-е" или "-d"
Scanner scan = new Scanner(System.in);
while(scan.hasNextLine()){
if(cypher_mode.equals("-e")){ System.out.println(enigma.encipher(scan.nextLine())); } else{ if(cypher_mode.equals("-d")){ System.out.println(enigma.decipher(scan.nextLine())); } } }


Ответ

Поскольку строковые значения -d и -e имеют отношение к параметрам командной строки, т.е. к по сути к пользовательскому интерфейсу, а не непосредственно к логике программы, можно завести enum.
public enum CipherMode { ENCIPHER, DECIPHER; }
Где-то у вас будет код вида:
CipherMode mode = null; if (args.contains("-d")) { mode = DECIPHER } if (args.contains("-e")) { mode = ENCIPHER; } ... if (mode == null) { System.out.println("Не указан режим работы шифра."); return; }
Дальше уже используйте этот enum:
public void scanner(EnigmaService enigma, CypherMode cipherMode){ Scanner scan = new Scanner(System.in); while(scan.hasNextLine()){ String line = scan.nextLine(); switch(cipherMode) { case ENCIPHER: enigma.encipher(line); break; case DECIPHER: enigma.decipher(line); break; } }
PS. Подчеркивания в именах в Java не приняты.

Комментариев нет:

Отправить комментарий