day 1. 거의 처음 kotlin 접하고 느낀점들.
강의/부캠 안드로이드 학습정리

day 1. 거의 처음 kotlin 접하고 느낀점들.

그냥... 어.. 짜증이 너무 난다. 자바 전신이라 그런 것 같다. 그 과정중에 이런거 아닐까? 하고 생각해본 것들..

 

1. main 함수 만드는것도 java에서 package만들고 그 폴더 안에서 main 클래스 만들고 하는 거랑 비슷한 것 같다. 단지 클래스 이름을 안맞춰도 되는 듯.

2. val은 변경 안되는 변수고, var은 변경되는 변수라는데 걍 val만 쓰는 것 같다.

3. MutableList<T>랑 mutableListOf<T>가 따로있고, 리스트를 만들어 줄 땐 mutableListOf를 사용한다. 아마 List<T>나 Mutable<T>는 Int처럼 어떤 자료형인지 나타내는데 사용하는 것 같다. 말장난하나

또 List<T>, Array<T>, ArrayList<T> 이렇게도 종류가 있지만 결과정으론 Mutable이 부모클래스라 컴파일할 땐 어차피 mutable로 되서 거기서 거기의 속도가 나온다고 한다. 이럴거면 왜 저렇게 복잡하게 종류를 많이 만들었나? 이게 발전한 최신 언어라고?

4. 그래도 편리하게 만든다고 입력받을때 토큰 만들고 System.out.input 이런거 쓸 필요 없다. 그냥 readline()으로 해결하고, string에서 split이나 map도 파이썬처럼 사용 가능하다. 자기 자신의 원소를 가리킬 땐 it을 사용한다.

val st:String = readLine().toString()
val sl = st.split(" ").map { it.toInt() }
return sl

또 System.out.println도 사용할 필요 없이 println만 써도 됨. println은 코틀린 언어고 System.out.println은 자바언어. 완벽한 호환성을 위해 남겨놓은 것 같다.
5. 자바처럼 앞에 int a = 8로 안하고 불편하게 val a:Int = 8 이런식으로 해야 한다. 또 함수 정의할 때 argument들의 자료형과 return 하는게 어떤 자료형인지 반드시 명시 해줘야 한다. 안그러면 에러난다. 이게 함수 정의하는건 이해해도 저 변수명 정하는 방식은 이해가 안간다.

6. 리스트 정의할때도 화나는게 아니 그냥 List<Int>(8) 이런식으로 하면 안되나?

 

불평만 늘어놓은 것 같다..

 

  • 스스로 확인할 사항스스로 확인할 사항은 매일 챌린지 문제 해결 과정에서 학습한 내용을 스스로 점검할 사항이다. 학습 배경 지식과 함께 문제 해결 과정에서 경험을 정리해두기를 권장한다.
    • 정수형만 지원한다고 가정하고 구현할 경우, 문자열을 지원해야 하는 경우 어떤 부분이 달라졌는가 설명한다.
    어떤 자료형을 받는지 달라짐. 즉 generic을 다르게 설정.
    • 함수를 여러 개로 분리해서 만들면서 어떤 기준으로 함수를 분리했는가 설명한다.
    1. 반복하는거. 2. 길어지는거.
    • git의 branch에 대해서 이해를 하고 있는가 본인이 이해한 데로 설명해본다.
    branch를 딴 시점에서 그 branch는 복사본과 비슷한 형태가 됨. 실제로 local도 branch가 변함에 따라서 같이 바뀐다. merge가 이 branch들끼리 합치는거고 push와 pull은 local과 github와의 연동.
    • PR 보낼 때까지 과정에서 사용한 git 명령과 명령별 옵션을 확인해본다.
    add 해서 commit 할거 stage에 올리고 commit. github에 push. github 내에서 branch 끼리 합쳐달라는 pull request.
  •  
  • 다같이 확인할 사항다같이 확인할 사항은 챌린지 문제 해결 과정 이후에 그룹과 함께 서로 다른 시각에서 설명하고, 이해한 내용을 공유하는 사항이다. 그러기 위해서 배경 지식과 본인의 의견도 함께 정리해두기를 권장한다.
    • 원본 저장소를 fork해서, PR을 보낼 때까지 흐름에 대해서 각자 이해한 내용을 설명하고 다른 사람 설명과 차이점가 있는지 비교한다.
    https://www.facebook.com/finereportkorea/photos/a.129055592018235/261361625454297/
    • git add와 commit을 할때 git 내부에서는 어떤 동작이 일어나는 것인지 자료를 찾아서 학습하고 이를 비교해서 정리한다.
    local에서 바뀜. 직접 보여주는게 빠를듯.
    • 여러 명이 협업을 하며 프로젝트를 개발할때는 다양한 branch전략을 세워서 한다. 실무에서 사용하는 워크플로우 (예 - gitflow, git workflow, gitlab workflow 등)에 대해서 찾아보고, 왜 그런 전략이 필요한지 고민한 후 비교한다.
  •  

gitflow가 좋은 것 같다. develop으로 main은 잘 안건드리는 것. 다만 새 기능을 만들때마다 매번 branch를 만들고 삭제하는게 좀 불편한 듯.

 

 


후기..

 

할게 너무 많다..