ID와 PASSWORD 일치여부 앱의 코드 리팩토링

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를 더 배우고나면 좋은 코드가 무엇인지 감이 확실히 올거라 믿는다.