ID와 PASSWORD일치여부 앱의 코드 리팩토링
생활코딩 JAVA를 수강중에 나오는 실습들만 따라하는 게 아니라 더 나아가 응용을 스스로 하고 있다.
그만큼 JAVA의 매력에 푹 빠졌달까…
실습에선 ID와 PASSWORD가 일치하면 로그인되는 결과만 도출하는 APP이었다면 나는 더 나아가 ID만 일치하고 PASSWORD가 다른 경우 PASSWORD를 다시 입력하라는 메세지를 전달하는 APP을 만들고 싶었다.
그래서 내가 처음 짠 코드는 아래와 같다.
초기 코드
조건문을 어떻게 해야하는 지 고민스러웠다.
일단 가장 쉬운 if로만 이루어진 코드를 짰다.
원하는대로 작동하니 정말 뿌듯했다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| public class authapp {
public static void main(String[] args) {
String[][] users = { {"민지", "111"}, {"하지", "222"}, {"뽀니", "333"}, {"라미", "444"} }; String inputId = args[0]; String inputPass = args[1]; Boolean isRightId = false; Boolean isRightPass = false; for(int i=0; i<users.length; i++) { String[] current = users[i]; if(current[0].equals(inputId)){ isRightId = true; if(current[1].equals(inputPass)){ isRightPass = true; break; } } } System.out.println("Hi,"); if(isRightId && isRightPass) { System.out.println(args[0] + " Long time No see!"); }else if (isRightId && (!isRightPass)) { System.out.println(args[0] + " Please check password again"); }else{ System.out.println(args[0] + "Please sign up"); } } }
|
작동해서 뿌듯했지만 프로그래머들 사이에서 들여쓰기가 3번이상된다면 코드를 한번 더 봐라라는 격언이 있다고 들었다.
리팩토링 두번째코드
주석없이도 다른 사람이 알아볼 수 있는 코드를 만들고 싶었다.
위의 코드와 1줄차이이고 두번째코드가 오히려 1줄 더 길다.
하지만 나는 두번째코드가 직관적이라서 더 좋은 느낌이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Boolean isRightId = false; Boolean isRightPass = false; for(int i=0; i<users.length; i++) { String[] current = users[i]; if(current[0].equals(inputId) && current[1].equals(inputPass)) { isRightId = true; isRightPass = true; break; }else if(current[0].equals(inputId)) { isRightId = true; break; } }
System.out.println("Hi,"); if(isRightId && isRightPass) { System.out.println(args[0] + " Long time No see!"); }else if (isRightId && (!isRightPass)) { System.out.println(args[0] + " Please check password again"); }else{ System.out.println(args[0] + "Please sign up"); }
|
좋은 코드란 무엇일까?
아직까지 잘 모르겠다.
JAVA를 더 배우고나면 좋은 코드가 무엇인지 감이 확실히 올거라 믿는다.