implicit이란 묵시적인 이라는 뜻으로 코드를 작성할때 그 코드의 뜻이나 의미를 내포하고 있는 코드를 말한다.
이 묵시적인 코드작성방법의 예로는 기본적으로 타입 형변환때가 있다.
int numInt = 10;
double numDouble = numInt;
위에와 같이 numInt는 int 타입으로 10이라는 값을 가지고 있었다. 이 변수를 numDouble에 넣으면서 자동으로 numInt를 double로 형변환하여 numDouble에 넣어준다.
❗ 여기서 묵시적인 코드라는것은 위에 코드처럼 자동으로 형변환 되는것을 놔두는 것과 같이 그 코드의 뜻을 내포하고 있는것을 말한다.
이 외에도 함수 내에서 자신의 맴버변수를 가르킬때 this를 생략하거나 변수명을 줄여서 즉 aplication context → ac로 줄이는 것들이 있다.
이와 같이 간단하고 짧은 코드를 선호하여 작성하는 코드를 Implicit한 코드라고 말한다.
explicit이란 명시적인 이라는 뜻으로 코드를 작성할때 그 코드의 뜻이나 의미를 그대로 나타내는 코드를 말한다.
명시적인 코드 또한 타입 형변환으로 예를 들자면
int numInt = 10;
double numDouble = (double)numInt;
위와 같이 자동으로 형변환을 해주는것도 double로 형변환 된다고 이렇게 명시적으로 표현해주는것을 이야기 한다.
❗ 이와 같이 명시적인 코드는 코드의 의미와 뜻을 내포하지 않고 다 표현하는 방법을 이야기 한다.
그럼 이 두 방법중 어떤 코드 작성 방법이 좋은걸까…??
implicit의 장점으로는 코드를 짧고 간결하게 작성이 가능하며 코드가 깔끔하다는 느낌을 받을 수 있다.
하지만 implicit의 단점이 바로 코드의 의미를 한번에 알기 힘들수 있다는 점이 있다. 그래서 이러한 점을 채워주는것이 explicit의 장점이다.
학교 선생님께서는 코딩테스트와 같은 상황에서는 implicit하게 작성하여 빠르게 코드를 작성하는것이 좋은것 같고 다른 개발자들과 함께 협업하는 프로젝트 코드에서는 explicit하게 작성하여 서로 소통하는 부분에서 더 유리하도록 작성하는것이 좋다고 하셨다.
나도 코딩테스트의 코드는 일회용과 같이 한번만 사용하고 다른 사람들과 협업하는것이 아닌 나 혼자 작성하는 코드이기에 implicit한 작성방법이 좋은것 같다.
그리고 협업시에는 선생님께서 explicit한 작성법을 추천해 주셨는데 나는 협업시에는 동료들과 이러한 부분을 미리 좀 컨벤션과 같이 정하고 작성하는것이 좋은거 같다.
매번 명시적으로 작성하는것은 명확해서 좋을 수 있지만 그에 따라 코드도 더 길어지게 되고 그럼 또 그에 따라 가독성도 떨어질 수 있다고 생각한다.
그래서 협업시에는 팀원들과 소통하여 그 팀에 맞게 작성하는것이 좋은것 같다.