Book
-
2022-01-30일 노개북 클린코드Book/Clean Code 2022. 2. 7. 13:19
오늘 읽은 부분 : 5장 형식 맞추기 형식을 맞추는 부분은 보기에도 좋고 가독성이 올라가니 매우 중요한 부분이다. 하지만 요즘에는 띄어쓰기나 코드 블럭들을 IDE 나 Plugin들이 해결해주기 때문에 그렇게 신경을 쓰진 않지만 책 뒷부분에 나온 수직거리 가로 형식을 다시 리뷰해보겠다. 수직거리는 서로 밀접한 개념들은 세로로 가까이 둬야한다는 것이다. 함수안에 어떤 함수를 부르는 로직이 들어있다면 부르는 함수보다 불리우는 함수를 아래에 두자 그러면 자연스럽게 읽힌다. 변수도 사용하는 위치에 가깝게 선언을 하자 인스턴스 변수는 클래스 맨 처음에 위치 시키자 가로형식은 너무 길게 쓰지 말고 의미를 구분할때는 확실히 띄어써주자 무엇보다 어떤 팀에서 같이 작업을 한다면 팀 규칙이 나의 규칙이 되어야 한다
-
2022-01-28일 노개북 클린코드Book/Clean Code 2022. 2. 7. 13:10
오늘 읽은 부분 : 4장 주석 실제로 나는 주석을 과도하게 썼던 편이었다. 이유는 딱히 협업을 해본적이 많지 않았고 해보더라도 나랑 비슷한 실력의 사람들과 한것이 다이기도 했고, 보통 공부용으로 코드를 짜기때문에 다시봤을때 이해가 잘 되라고 작성을 했던것 같다 하지만 이번 장을 읽으면서 차라리 완벽한 이름과 필요한 만큼에 주석만 썼더라면 더 빨리 이해가 되고 나중에 협업을 한다면 익숙해져 있을 것이라는 생각이 들었다. 초보 개발자들이 주석을 다는 이유는 코드의 품질이 낮기 때문이다. 내가 이렇게 코드를 짰는데 이건 이런식으로 돌아가요 라는 식의 과도한 설명이 담겨있다. 하지만 주석을 아무리 쓴다고 해도 코드의 품질이 올라 가는 것은 아니다. 그래서 코드로 의도를 표현하자 함수명이 좀 길면 어떻나 잘 설명..
-
2022-01-26일 노개북 클린코드Book/Clean Code 2022. 1. 26. 23:54
오늘 읽은 부분 : 3장 함수 작게 만들어라 함수를 작게 작게 만들수록 읽기쉽고 이해하기 쉽다. 중첩 구조가 많아질수록 함수가 점점 커진다. 들여쓰기른 1단이나 2단을 넘기지 말자 한 가지만 해라! 이건 정말 여러번 들었던 말이다. "함수는 한 가지 일만하고, 그 한가지를 잘해야한다." 어떤 작업을 할 때 추상화 수준이 한단계로 쪼개서 수행하기 쉽다. 함수 다 추상화 수준은 하나로! 함수가 확실히 한가지 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일 해야한다. 추상화 수준이 뒤죽박죽이면 코드를 일는 사람이 헷갈린다. 근본적인 개념인지 세부사항인지 한 눈에 구별하기 어렵기 때문이다. 위에서 아래로 코드 읽기:내려가기 규칙 코드는 위에서 아래로 이야기처럼 읽혀야 좋다. ex) vip회원과 일반회원의..
-
2022-01-24일 노개북 클린코드Book/Clean Code 2022. 1. 24. 13:44
오늘 읽은 부분 : 2장 의미있는 이름 의도를 분명히 밝혀라 의도가 분명한 이름을 지어라? 이 이름의 존재이유와 수행기능 사용방법이 주석으로 표현된다면 의도가 불분명한 이름이라고 할 수 있다. 흔히들 알고리즘을 풀거나 간단한 학교 과제를 할때 변수명을 대충 지었던 경험이 있을것이다. 다시 백준 문제를 보는데 이 변수는 뭘 담는 내용인지 알기 어려운때가 대부분이다. 2학년때 작성했던 자바 과제를 이 책에서 알려주는 방식대로 리팩터링을 해보겠다. for (int o = 0; o < num_desks; o++) { for (int i = 0; i < 4; i++) { for (int j = 0; j < 13; j++) { Card card = new Card(suits[i], rank[j]); cards.pu..
-
2022-01-22일 노개북 클린코드Book/Clean Code 2022. 1. 22. 21:44
오늘 읽은 부분 1장 : 깨끗한 코드 점점 기술이 발전하고 프로그래밍 언어가 점점 추상화되면서 늘어난다 하더라고 코드 만은 사라질 수 없다. 코드가 고객이 요구하는 사항들을 명시하는 도구이기 때문이다. 나쁜코드 아직 직장을 다니거나 프로젝트한 경험이 많지 않아 다른 사람의 코드를 볼 기회가 많진 않았지만 확실히 잘짠 코드와 내가 짠 코드를 보면 왜이렇게 추상화 되어있는지 내가 짠 코드인데 다음에 보면 이해가 되지 않는 경우가 많아 다시 코드보면서 복습하려고 하면 코드를 이해하는데만 많은 시간이 걸린 경험이 있다. 저자는 이 나쁜코드로 한 회사가 몰락했다는 이야기를 할정도로 좋은 코드를 강조한다. 기한안에 완료하려면 나쁜코드를 짜면 안된다! 이 말이 학부인 나에겐 완전히 이해가 되지 않지만 여러명과 협업을..
-
2022-01-21 노개북 클린코드Book/Clean Code 2022. 1. 21. 09:27
오늘 읽은 부분 추천사, 들어가면서 노마드코더에서 진행하는 노개북에 참여하게 되었다. 짬날때마다 계속 읽다가 멈추고 읽다가 멈추는걸 반복하다보니 온전히 나의 것이 되지 않는 기분이 들었다. 그래서 짧은 시간에 책을 완독 하기위한 좋은 동기가 될것 같다. 나는 지금 java+spring을 공부하고 있기 때문에 java코드로 설명하고 있는 이 책은 오히려 좋았다 ㅎㅎ 배운걸 정리하되 웬만하면 내가 다시 코드를 직접 만들어 정리해볼 생각이다. 노마드코더에서 지정해준 스케줄표는 클린코드를 전체 다 읽지 않는 다고 한다. 하지만 나는 끝까지 읽을 생각이다. 가장 강조하는 것은 "장인 정신", 이다. 어쩌면 보든 분야에 적용되는 말일테다 필요한 지식을 습득하고 열심히 연습해서 몸과 마음에 저장하는 일 말이다. 또 ..
-
디자인 패턴 - 2Book/스프링 입문을 위한 자바 객체지향의 원리와 이해 2022. 1. 4. 16:19
Template Method Pattern(템플릿 메서드 패턴) => 의존 역전 원칙(DIP) 상위 클래스의 견본(템플릿) 메서드에서 하위 클래스가 오버라이딩한 메서드를 호출하는 패턴 견본(템플릿)을 제공하는 class에서 템플릿 메서드를 하위 클레스에게 구현을 강제하는 추상 메서드 + 선택적으로 오버라이딩할 수 있는 (hook)메서드를 구현한다. public abstract class Parent { //템플릿 메서드 public void templateMethod(){ System.out.println("blablabla"); 메서드A(); 메서드B(); } //추상 메서드 abstract void 메서드A(); //hook 메서드 void 메서드B(){ } } public class Child1 e..
-
디자인 패턴 - 1Book/스프링 입문을 위한 자바 객체지향의 원리와 이해 2022. 1. 3. 23:03
디자인 패턴을 왜 알아야할까? 디자인 패턴이라면 일종의 설계도 레시피이다. 프로그램을 작성하다 보면 비슷비슷 한 경우가 자주 발생하는데 이럴땐 이렇게 하라라는 레시피를 정리 해 둔 것이다. Adapter Pattern(어댑터 패턴) 호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴 adapter == converter 변환기로 서로다른 두 인터페이스 사이에 통신이 가능하게 하는 것이다. //AdapterServiceA public class AdapterServiceA { ServiceA s1 = new ServiceA(); void 메서드(){ s1.메서드A(); } } //AdapterServiceB public class AdapterServiceB { S..