본문 바로가기

분류 전체보기

(99)
2022/02/01 TIL 클린 아키텍처 5장 : 객체 지향 프로그래밍 OO란 다형성을 이용하여 전체 시스템의 모든 소스 코드 의존성에 대한 절대적인 제어 권한을 획득할 수 있는 능력 OO의 특징을 크게 캡슐화, 상속, 다형성이라고 한다. 하지만 캡슐화와 상속은 객체 지향적으로 프로그래밍 하는데에 아키텍트 관점에서 큰 변화를 가져오지 못한다. 다형성의 힘은 의존성 역전을 통해 배포 독립성, 개발 독립성을 갖는 다는 것이다.
2022/01/31 TIL 클린 아키텍처 3장 : 패러다임 개요 각 패러다임(구조적, 객체지향, 함수형 프로그래밍)은 프로그래머에게 권한을 박탈한다. 어떠한 프로그래밍 방법을 사용한다고 하면 개발자에게 가져다 줄 이득을 생각하지만 어떤 것을 제한하는지를 생각해보게 되었다. 클린 아키텍처 4장 : 구조적 프로그래밍 다익스트라는 증명이라는 수학적 증명을 이용해 프로그래밍을 발전시키고자 했다. 이 증명을 할 때 goto문이 방해된다는 것을 알게 되었다. 뵘과 야코피니는 순차, 분기, 반복 세 가지 구조만으로 표현할 수 있다는 사실을 증명했다. 순차, 분기, 반복이라는 프로그래밍의 기초가 어떻게 발견되고 사용되어왔는지 알게 되었다. 수학은 증명 가능한 서술이 참임을 입증하는 원리 과학은 증명 가능한 서술이 거짓임을 입증하는 원리 테스트를..
2022/01/30 TIL 클린아키텍처 1장 : 설계와 아키텍처란? 빨리 가는 유일한 방법은 제대로 가는 것이다. TDD를 했을때가 안 했을 때보다 빠르다는 연구 결과가 있다. 클린아키텍처 2장 : 두 가지 가치에 대한 이야기 소프트웨어는 부드러운 제품이라는 뜻이다. 우리가 만드는 것이 하드웨어가 아니라 소프트웨어임을 항상 자각해야 한다. 변경이 용이한 코드를 작성해야 한다. 긴급하지만 중요하지 않은 일은 하게 된다. 우리는 이를 해결하기 위해 투쟁해야 한다. 종종 개발자와 관리자는 우선순위를 잘못 정하는 경우가 있다. 이를 개발자가 인지한다면 적극적으로 의견을 내야 한다. 이게 개발자(아키텍트)가 고용된 이유이기도 하다.
2022/01/29 TIL 클린코드 17장 : 냄새와 휴리스틱 플래그 인수는 피해야 한다. 인수로 boolean을 던지기 전에 조건문을 추가해야 한다. 조건문(if, switch) 대신 다형성을 사용하라 요즘 실무에서 코드를 작성할 때 적극적으로 리팩토링 하고 싶은 부분이다. 매직 숫자는 명명된 숫자로 교체하라 코드숨에서 종립님에게 코드 리뷰받았던 기억이 있는 부분이다. 매직 숫자는 상수로 빼는 것을 1차적으로 고려해야 한다. (대부분의 경우 상수가 맞다.) 상수는 상속하지 않는다. 실무에서 상수를 상속받는 코드를 분석할 때 힘들었던 기억이 있다. 이 책에서 확실하게 안 좋다고 강조해서 좋았습니다.
2022/01/28 TIL The RED : TDD 테스트 주도 설계? 테스트 주도 설계라는 말을 사용하려면 TDD를 하게 되면 좋은 설계가 되어야 하는데 그렇지 않다. 단위 테스트는 책임 분산을 유도하지 않는다. 낮은 응집에 대한 피드백을 주지 않는다. 의도 노출을 요구하지 않는다. 설계 관점에서는 TDD에서 힌트는 얻을 수 있지만 해결책은 아니라는 생각이 들었다. 양질의 경험과 함께 DDD, MSA를 학습하면 좋은 설계를 만들 수 있지 않을까 라는 생각을 했다. 테스트 주도 개발의 한계 은탄환은 없다. 브레드 브룩스의 논문에 다오는 내용으로 소프트웨어 프로젝트에 은총알이란 없다는 뜻이다. TDD 역시 좋은 개발 방법론이지만 모든 것을 해결해 주지는 않는다. 테스트가 힘든 경우 예측하기 어려운 코드(랜덤값, 동시성 문제 등등) ..
2022/01/27 TIL The RED : TDD private 메소드는 테스트해야 하는가? 결론적으로 이규원 님의 의견은 No이다. private 메소드 자체가 외부에 공개되지 않아야 하는 코드인데 테스트하게 되면 내부 구현이 노출된다. 내용 결합이 발생해 운영코드와 테스트 코드가 강하게 결합되어 한쪽이 변경되면 다른 한쪽에 많은 영향을 끼치게 된다. private 메소드 테스트는 처음 TDD를 학습할 때부터 궁금한 영역이었는데 강의를 보기 전부터 테스트를 안 하는 것이 좋다고 생각했었다. private을 테스트하기 위해 protected public으로 바꾸거나 reflection을 활용하는 방법이 있을 것 같았는데 결과적으로 private 함수는 테스트하는 대상의 관심사가 아니라는 생각이 들었었다. 이번 챕터에서는 캡슐화와..
2022/01/26 TIL 클린 코드 15장 : JUnit 들여다보기 접두어 f는 중복되는 정보다. 그러므로 접두어 f를 모두 제거하자. 해당 클래스에서 종종 동일한 단어가 변수에 들어가는 경우가 생기는데 이런 부분은 클래스 이름 좀 더 명확히 하고 중복되는 단어를 줄이는 것이 좋다. 부정문은 긍정문보다 이해하기 약간 더 어렵다. 공감 가는 부분이었다. 가능하다면 비교 구문에서는 긍정문을 사용하는 게 좋다. 클린 코드 16장 : SerialDate 리팩터링 비판이 있어야만 발전도 가능하다. 의사들도 한다. 조종사들도 한다. 법률가들도 한다. 우리 프로그래머들도 방법을 배워야 한다. SerialDate라는 라이브러리의 코드를 수정하기 전에 나온 내용이다. 실력 있는 개발자들은 코드를 공개하고 이에 대한 비판을 두려워하기보단 성장의 ..
코드숨 북클럽 [인스파이어드] 회고 북클럽이란? 읽고 싶은 부분을 선정하여 짧은 독서시간을 가진 후 대화를 진행하는 형식이다. 코드숨에서는 매주 수요일 책 스터디를 진행 중이다. 개인적으로 읽은 내용 5p. 주어진 업무를 충실하게 수행하면서 주 60시간보다 적게 일하는 제품 관리자를 많이 보지는못했다. 60시간 일하는 제품 관리자가 개발자에게도 동일한 업무 시간을 요구한다면? 개발자들은 일만 해서는 좋은 프로덕트를 만들 수 없다고 생각한다. 주 60시간 넘게 일하면 개발 실력을 어떻게 키울 수 있을지 모르겠다. 퇴근 후에 회사와 나의 성장을 위해 학습하는 시간을 확보하는 것이 좋다고 생각한다. 개발자가 퇴근 후 개발 공부를 하는 것이 본인만을 위한 시간인가? 10p. 초기 시장의 니즈에 부합하는 강력한 제품을 만들어 내야 한다. 시니어 개..
2022/01/25 TIL 클린 코드 14장 : 점진적인 개선 프로그래밍은 과학보다 공예에 가깝다. 지저분한 코드를 짠 뒤에 정리해야 한다는 의미이다. 퇴근 후 학습을 하고 나면 실무에서 바로 적용하고 싶은 욕구가 많이 생기게 된다. 하지만 막상 적용해보면 상황에 알맞지 않아 오히려 더 어려움을 겪은 경험이 있다. 이는 내가 생각한 코드에 상황을 맞추려고 했었기 때문이다. 처음에는 동작하는 최소한의 코드를 만들고 점진적으로 깨끗한 코드를 만들어야 한다. 인수 유형은 다양하지만 모두가 유사한 메서드를 제공한다면 클래스 하나로 분리하는 것을 고려하면 좋다. 클래스 분리의 시기를 하나 더 알게 되었다. The RED : TDD DOC(Depended On Component) : 실제 의존하고 있는 요소 SUT(System Under T..
2022/01/24 TIL 클린 코드 13장 : 동시성 동시성이 어려운 이유? public class X { private int lastIdUsed; public int getNextId(){ return ++lastIdUsed; } } 위의 코드에서 모든 경로를 고려하려면 JIT 컴파일러가 바이트 코드를 처리하는 방식과 자바 메모리 모델이 원자로 간주하는 최소 단위를 알아야 한다. 간단하게 바이트 코드만 고려해도 경로는 약 12,870 개에 달한다. 어떤 레벨에서 경우의 수가 많은지 몰랐었는데 이번기회에 동시성의 경우의 수가 발생하는 부분을 알게 되었다. 스레드 코드 테스트하기 다중 스레드를 고려하지 않는 순차 코드부터 만들기 보조 코드를 넣어 강제로 실패를 일으키게 한다 자동화하기 TDD는 아는것에서 모르는 것으로 이동하며 ..