2주차 문제풀이를 하면서 느낀점 몇가지

1) 코테언어를 Java > Kotlin 으로 변경했는데 너무 속시원하다

  • 자바는 좀.. 장황한 측면이 있는거같다… 콘솔출력이 메이져 언어 들 중에서는 꽤나 긴편이 아닐까??
system.out.println("Hello world")
println("Hello world")
  • 근데 이건 논쟁의 소지가 있는게, 자바도 static 임포트 하면 코틀린처럼 쓸수 있다. 근데 이건 바로 아래 나올 impor 구문에서..

2) import 구문을 일일히 다 적어줘야한다

  • 이거.. 스프링으로 웹개발하다보면 자바파일 상단 50줄은 import 문이다
  • 인텔리제이도 기본값으로 import 문을 접어버린다. 이거는 뭐.. 언어 기본 스펙이니 그려러니 하려다가도 너무 많아서 어질어질 할때가 가끔 있다

3) 함수가 꼭 클래스에 소속되어 있어야함

  • 함수 단독 존재가 불가능하고 클래스가 있어야함.
  • 람다식이 있다고 할수 있지만 이것도 FunctionalInterface 가 만들어지는거라 결국 클래스가 눈에 안보일뿐..
  • 이게 특히 코테에서 문제가 되는게 져지사이트에서 클래스명 고정하고 psvm 에다가 로직을 다 구현헤야하는 어려움이 있다

4) 구조체가 없음

  • JDK17 이후부터 record class 가 있긴 한데.. 이것도 결국 클래스임
  • 고랭을 쓰면서 백엔드 언어로 진짜 찰떡이라고 생각한거 중에 하나가 구조체가 있다는건데 API 스펙 맞춰주기 참 좋은거같다..

5) Pair 가 없음

  • 이거 페어 자료구조가 없음. 이건 알고리즘 언어 관점에서 그냥 용서가 안됨
class Pair {
private final Object first
private final Object second

//const

//getter
}
  • 이런식으로 매번 커스텀 만들어서 써야함.
  • 회사일이나 프로덕트에서 쓸때는 꼭 interface + generric 으로 만든다음 impl class 하나 더 만들어서 씀
  • Pair 랑 Treeple 정도는 만들어주면 좋지 않을까.. 조심스레 생각해봄
  • 꿀팁이라면 꿀팁인데.. 자바 만드신 분들이 보면 뒷목을 잡으실수도 있겠지만.. 코테에선 그냥 Object[] 자료구조로 어떻게든 우회해서 쓴다

6) 함수가 리턴값이 꼭 하나임

  • 이건 뭐 이 언어를 만들 당시의 철학과 원칙이니 그려러니 하는데
  • 코테에서는 영 불편함. 그러니까 아래같은 기능 있으면 좋을꺼같은데..
  • SOLID 니 SRP 니 이런거를 위배할 가능성이 높아지는데 그건 완전히 인정하는 부분입니다. 지금 자바언어로도 충분히.. 괴물들을 많이 봐왔..ㅠㅠ
pubilc UserInfo readInput () {
    return UserInfo.of()
}
pubilc (String,Int) readInput () {
    return (userName, userAge)
}