Implicit Code는 프로그래밍에서 명시적으로 드러나지 않고, 시스템이 자동으로 로직을 처리해주거나, 암시적으로 실행되는 코드를 말합니다.
Java에서, 모든 객체들은 Object 클래스를 상속받고 있습니다.
여러분들이 그냥 어떤 객체를 만들어도 쓸 수 있는 toString() 과 같은 메서드가 Implicit Code 입니다.
class Person {
String name;
Person(String name) {
this.name = name;
}
};
public class Main
{
public static void main(String[] args) {
Person p1 = new Person("a");
Person p2 = new Person("a");
System.out.println(p1); // true
System.out.println(p2); // false
}
}
toString(), equals(Object object)처럼 명시되어 있지 않지만,
바로 쓸 수 있는 메서드들도 Implicit Code라고 합니다.
Implicit Code의 장점
코드의 간결성이 좋아짐
코드의 유연성이 증가함
Implicit Code의 단점
가독성이 저하됨(너무 추상적이라서 이 메소드가 뭐하는 역할인 지 파악하기 어려움)
유지보수의 어려움(너무 추상적으로 잡으면 나중에 비슷한 메소드가 나왔을 때 계속 유지보수를 해야한다는 점이 있음)
public class Main
{
public static void main(String[] args) {
int cnt = 0;
for(int i=0; i<5; i++)
{
cnt++;
}
System.out.println(cnt); // 5
}
}
위와 같이, cnt라고 변수명을 줄여 쓰는 것도 Implicit Code입니다.
Implicit Code의 장점
코드의 간결성이 좋아짐
코드의 유연성이 증가함
Implicit Code의 단점
팀과 협업할 때, 다른 개발자들이 이해하기 어려움
의미 혼란 가능성이 높음
@Getter
public class User {
private String username;
private String password;
}
Lombok 라이브러리에서 제공하는 @Getter 어노테이션을 사용하면,
getUsername(), getPassword() 같은 메서드들을 암묵적으로 만들어 줍니다.
이 또한, Implicit Code라고 볼 수 있습니다.
Implicit Code의 장점
코드의 간결성이 좋아짐
생산성이 많이 증가됨
Implicit Code의 단점
동작과정을 알기 어려움
예상치 못한 상황이 발생할 우려가 있음
var username = "lian2945";
이렇게 데이터 타입을 지정하지 않고, 컴파일러에게 추론하라고 하는 방식도 Implicit Code를 활용한 코드 방식이라고 볼 수 있습니다.
Implicit Code의 장점
개발속도 향상
유연성 제공
Implicit Code의 단점
예상치 못한 동작 가능성
타입 안정성 부족
Explicit Code는 프로그램에서 모든 동작을 정확히 정의하고, 개발자가 코드의 의도를 명시적으로 표현하는 방식입니다.
class Person {
String name;
Person(String name) {
this.name = name;
}
};
public class Main {
public static void main(String[] args) {
Person p1 = new Person("a");
Person p2 = new Person("b");
System.out.println(p1.toString());
System.out.println(p2.toString());
}
}
Explicit Code의 장점
코드의 명확성이 높아짐
유지보수가 용이함
Explicit Code의 단점
너무 Explicit하게 쓰면, 코드가 장황해짐
개발속도가 저하됨
public class Main
{
public static void main(String[] args) {
int count = 0;
for(int i=0; i<5; i++)
{
count++;
}
System.out.println(count); // 5
}
}
Explicit Code의 장점
가독성이 매우 뛰어남(대규모 프로젝트에서)
수정하고 협업할 때, 유지보수성이 뛰어남
Explicit Code의 단점
초기 개발속도가 현저히 느려짐
초보 개발자에겐 부담이 될 수 있음
public class User {
private String username;
private String password;
public String getUsername() {
return this.username;
}
public String getPassword() {
return this.password;
}
}
Explicit Code의 장점
제어권 강화
효율적인 메모리 사용
Explicit Code의 단점
의존성 문제
개발속도 매우 저하
String username = "lian2945";
Explicit Code의 장점
가독성 향상
안정성과 성능 향상
Explicit Code의 단점
유연성 부족
개발속도 저하(프로토타입 개발 때)
팀과의 협업을 하거나 대형 프로젝트를 할 때에는, Explicit한 Code를 사용하는 것을 추천하고, 자신만의 소규모 프로젝트나 코테등을 풀 때에는 Implicict한 Code를 추천한다.
꼭, Implicit Code라고 나쁜 것만은 아니니까, 잘 이해하고 넘어가길 바란다.
그리고 되도록이면, 라이브러리는 Explicit Code한다고 따로 만들지 말고, 원래 있던 것을 쓰기 바란다.