본문 바로가기

분류 전체보기156

2. 리팩터링 원칙 2.1 리팩터링 정의 리팩터링 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 특정한 방식에 따라 코드를 정리하는 것만이 리팩터링이다. 동작을 보존하는 작은 단계들을 거쳐 코드를 수정하고, 이러한 단계들을 순차적으로 연결하여 큰 변화를 만들어내는 일이다. 리팩터링하는 동안에는 코드가 항상 정상 작동하기 때문에 전체 작업이 끝나지 않았더라도 언제든 멈출 수 있다. 리팩터링과 성능 최적화의 공통점 프로그램의 전반적인 기능은 그대로 유지한다 리팩터링과 성능 최적화의 차이점 리팩터링은 코드를 이해하고 수정하기 쉽게 만드는것(성능 관점 X) 성능 최적화는 오로지 속도 개선에만 신경 쓴다. 2.2 두 개의 모자 목적이 기능 추가냐 리팩터링이냐를 명확히 구분해.. 2022. 2. 13.
1. 리팩터링 첫번째 예시 1.2 예시 프로그램을 본 소감 프로그램이 새로운 기능을 추가하기에 편한 구조가 아니라면, 먼저 기능을 추가하기 쉬운 형태로 리팩터링하고 나서 원하는 기능을 추가한다. 1.3 리팩터링의 첫 단계 리팩터링하기 전에 제대로 된 테스트부터 마련한다. 테스트는 반드시 자가진단하도록 만든다. 1.4 statement() 함수 쪼개기 조금씩 변경하고 매번 테스트 하는 것이 리팩터링 절차의 핵심이다. 중간에 실수하더라도 버그를 쉽게 찾을 수 있다. 명확성을 높이기 위한 이름 바꾸기에는 조금도 망설이지 말자. 지역 변수를 제거해서 얻는 가장 큰 장점은 추출 작업이 훨씬 쉬워진다. scope 신경을 써야할 대상이 줄어들기 때문이다 임시 변수는 자신이 속한 루틴에서만 의미가 있으니 제거하는 것이 좋다 긴 함수를 잘게 쭈개.. 2022. 2. 2.
7. 연산자 overloading과 관례 관례(convention): 어떤 언어 기능과 미리 정해진 이름의 함수를 연결해주는 기법 기존 자바 클래스가 구현하는 인터페이스는 이미 고정되어있기 때문에 코틀린쪽에서 확장 함수를 사용해서 기존 클래스에 새로운 메소드를 추가할 수 있게 만들었다 7.1 산술 연산자 오버로딩 연산자를 오버로딩하는 함수 앞에는 operator를 붙여줘야한다 7.1.1 이항 산술 연산 오버로딩 operator O data class Point(val x: Int, val y: Int) { operator fun plus(other: Point): Point { return Point(x + other.x, y + other.y) } } fun main() { val p1 = Point(10, 20) val p2 = Point(.. 2022. 1. 23.
2021 회고(부제: 다양한 경험과 절망의 계곡) 2021 대충 큰 키워드를 뽑아보면 이직, 방황, 2021 후기이 있을것 같다. 이직 이직을 한 이유는, 여러가지가 있었는데 첫번째로는 개발문화였다 코드 질적으로 성장을 원하기도 했고, 코드리뷰, 해커톤 이런 개발 문화 같은 것들에 대한 목마름이 있었다. 두번째로는 대규모 트래픽이었다 결국 백엔드 엔지니어로서 증명을 하려면 대규모 트래픽을 핸들링하는 경험이 메인이라 생각해서이다. 세번째로는 다들 원하듯이 더 많은 보상을 받기를 원했다. 마지막으로는 개발 팀원끼리 뭔가 같이 일하는? 유대감이라 해야되나 그런걸 원했던 것 같다. 전에는 뭔가 코드적으로 성장하기보다는 도메인 지식이 늘어나는 테스크가 많았다면 여기는 사수님의 코드리뷰도 받고, 이것 저것 하고보니까 코드 질적으로 성장하는걸 많이 느꼈다. 전회사에.. 2021. 12. 31.