Today I Learned
-
2022년 7월 13일 TIL - 무엇을 시도해도 안 될 때는 눈 딱 감고 뒤로 돌아가기Today I Learned 2022. 7. 13. 23:56
이월 결정 이후 1주일 반 정도가 지난 이월 4주차 수요일을 지나고 있다. 오늘은 이월 이후 진행된 날들 중 가장 집중력과 텐션이 떨어지는 것 같다는 느낌이 들었다. 오후 2시까지 짝 프로그래밍을 진행하고, 3시 30분 즈음까지는 어제 올렸던 깐깐한 계산기의 소스코드를 복기하고 트레이너님이 올려주셨던 코드리뷰에 답글을 달았다. 그리고 Todo List 구현에 돌입했다. 지난 주차에 몇 번 완성해 본 Todo List였기에 지난 주차까지의 내용은 금방 구현하고, 파일 입력, 출력 기능을 추가해볼 수 있을 것이라 생각했다. 먼저 하나의 소스 코드 상에서 지난 주차까지 다뤘던 부분들은 작동되도록 완성하고, 작동하는 소스코드의 메서드와 클래스를 분리한 뒤, 파일 입출력 기능을 추가하는 것을 계획했다. 지난 주차..
-
2022년 7월 12일 TIL - 메서드를 사용할 때는 구체적인 작동 방식도 확인하자Today I Learned 2022. 7. 12. 23:56
어제 주어졌던 코딩 도장 문제인 문자열 내림차순으로 배치하기 문제를 푸는 과정에서 처음 알게 된 Character 클래스의 메서드 compare()를 사용해보는 과정에서 작은 이슈가 있었다. 어제 코딩 도장 문제는 영어 소문자와 대문자가 혼용되어 있는 주어지는 문자열을 영어 소문자 z와 영어 대문자 A의 순서인 [z-aZ-A]의 순서대로 정렬하는 문제였다. 해당 문제를 푸는 방법으로는 해당 문자열을 String인 상태 그대로 혹은 char 배열 타입의 변수로 변환한 뒤 정렬을 수행해주는 메서드를 사용하는 방법이 있었지만, 정렬 메서드를 이용해보지 않고 풀어보겠다는 계획을 세웠다. 주어진 문자열의 문자를 하나씩 꺼내와서 List에 문자를 넣는데, List에 이미 들어가 있는 문자들과 하나씩 크기를 비교해서..
-
2022년 7월 11일 TILToday I Learned 2022. 7. 11. 23:50
오전 코딩 도장 시간 풀이 시간 1시간 동안 주어진 정렬 문제를 풀지 못했었다. 할 것들이 많으니 일과 이후 밤 시간에 풀리지 않았던 부분을 찾아서 풀어보자는 생각으로 지금까지 잠시 미뤄뒀고, 소스코드의 논리 구조가 맞지 않는 부분을 찾아 교정하고 어떻게 교정했는지를 이 글에 써서 올릴 계획이었다. 그러나 풀어낸 소스코드가 모든 테스트 케이스를 완전히 통과하지 못해 관련된 글은 잠시 미뤄둬야 할 것 같다. 오늘은 풀릴듯 말듯 해결이 안 되는 것들에 시간을 오래 쏟았고, 그랬는데도 시원하게 해결한 것은 없었다. 하루를 되돌아보니 진도 체크 시트에 주간 과제 말고는 체크 박스를 채우지 못했다. 머리가 굳어 있는 것처럼 진도가 잘 나가지 않던 하루였다. 일단 이 글을 올린 뒤 밤 시간 동안 TDD와 마카오뱅크..
-
2022년 7월 10일 TIL - 결과물의 도출과 완벽주의Today I Learned 2022. 7. 10. 23:53
디스코드에 새 메세지가 올라왔음을 알리는 알림 소리가 때로는 신경을 곤두세울 때가 있다. 팀원들이 자신이 하고 있는 작업의 과정이나 결과를 공유하고, 트레이너님들이 그에 대한 피드백을 달아주시거나 조언을 주시는 등, 자신의 가치를 공유하고 기나긴 마라톤에서 한 걸음을 더 앞으로 내딛는 소리. 어떤 동료들은 정말 많은 가치들을 공유하기도 하는데, 그 생산성을 볼 때마다 자주 부럽다고 느낀다. 알림 소리가 날 때마다 가슴이 움찔거렸다. 마치 나에게 '빨리 글 써서 올려!' '넌 개념 정리 안하고 뭐하고 있었어?' 라고 다그치는 느낌이다. 왜 나는 파워 당당하게 디스코드에 '이게 제가 열심히 공부해서 정리한 개념 노트입니다!! 하하하하' 라고 올릴 만치의 글이 만들어져 있지 않을까? 주말에 학습에 투자한 시간..
-
2022년 7월 9일 TIL - 멤버 변수의 가시성과 접근 방식에 대한 고찰Today I Learned 2022. 7. 9. 23:30
프로그래밍을 하면서 거의 무조건 이런 방식으로 써야 한다고 해서 그렇게 써오고 있던 규칙 같은 것들이 있었다. 대표적으로 객체를 정의할 때 객체의 데이터인 멤버 변수의 접근 제어자는 private으로, 객체의 동작인 메서드의 접근 제어자는 public으로 지정하여 멤버 변수에는 메서드를 통해서만 접근하도록 하는 등이다. 사실 멤버 변수의 접근 제어자를 public으로 지정한다고 해서 문법적으로 틀려서 컴파일 에러가 발생한다던지 하지는 않는다. 그러나 이를 지키지 않으면 원칙에 위배되는 것이므로 그렇게 해서는 안 된다고 하길래 계속 그렇게 써 오고는 있었는데, '그게 그렇게까지 문제될 일인가?'라는 생각은 남아 있었다. 어제 트레이너님과 이야기를 나누면서 멤버 변수가 private이어야 하는 간략한 이유를..
-
2022년 7월 8일 TIL - 미라클 모닝 참여 후기Today I Learned 2022. 7. 8. 23:57
이번 주에는 동료분의 제안을 받아 오전 6시 이전에 일어나 일과를 시작하는 '미라클 모닝'을 했었다. 절대적인 시간의 양 자체도 많이 투입해야 하기에 잠도 줄여가며 공부를 해야 하지만, 최소한의 자는 시간을 보장하기 위해 4~5시간 수면은 밤을 새서 무언가를 해야 하는 상황이 아닌 이상은 보장하려 하는 편이다. 그렇게 되면 아침 8시와 밤 12시 사이의 시간을 제외하면 아침 이전의 2~3시간 혹은 밤 이후의 2~3시간을 추가로 쓸 수 있다. 지금까지는 밤 12시 이후의 2~3시간을 쓰는 방향으로 해오고 있었지만, 굉장히 아침 일찍 일어나시는 동료분의 제안을 받아 월요일부터 수요일까지 3일 동안 미라클 모닝에 참여했다. 이런 말하기는 부끄럽지만, 3일을 참여했다고 해놓고 월요일에는 오전 6시~7시 30분 ..
-
2022년 7월 7일 TIL - 적합한 이름 짓기라는 이름의 고통Today I Learned 2022. 7. 7. 23:40
이월 3주차의 종점을 향해 달려가고 있는 목요일, 주차를 진행하면서 느끼고 있는 가장 큰 화두는 클래스, 변수, 메서드의 '이름 짓기'이다. 나름 이름 짓기에 신경을 쓰고 있다고 생각했었다. x, a, b, c 이런 식의 한 글자 단어나 cnt, idx 같은 축약어를 쓰지 않으려 했고, 영단어 수준이나 문법이 허용하는 선에서 변수나 메서드의 역할도 의미가 드러나게끔 노력하고 있다고 생각했다. 아쉽게도 그 한 줌 있던 자부심은 주간 퀘스트를 수행하기 위해 작성한 소스코드에 트레이너님이 달아주신 리뷰를 보면서 산산조각나고 말았다. 수요일 오후에 리뷰를 확인하고 충격에 휩싸인 나머지 수요일 저녁에는 내가 어떤 단어나 표현을 쓰더라도 맞지 않는 표현을 쓴 것이라고 볼 수 있는 것 아닌가 하는 두려움에 휩싸여서 ..
-
2022년 7월 6일 TIL - 필요 이상의 영역을 굳이 미리 넘겨짚지 않기Today I Learned 2022. 7. 6. 23:15
ArrayList 인스턴스를 생성할 때 왜 일반적으로 ArrayList 구현체가 아닌 List 타입으로 선언하는지에 대한 의문이 있었다. 몇몇 블로그의 내용과 홀맨님이 알려주신 것들을 종합해본 내용은 다음과 같다. List는 interface이다. 이런 추상인 List에서 구현해야 하는 메서드 등을 각자에 맞게 구현한(implements) 것들이 ArrayList, LinkedList와 같은 구현체이다. interface 타입의 변수에는 구현체 인스턴스가 할당될 수 있으며, 해당 변수의 메서드는 구현체에 정의된 내용으로 수행된다. 그리고 특정 구현체의 인스턴스가 할당된 interface 타입의 변수에는 다른 구현체 인스턴스가 재할당될 수 있다. 이를 다형성(Polymorphism)이라 한다. 다형성을 지..