📚 개발 도서/클린코드
-
[클린코드] 오류 처리📚 개발 도서/클린코드 2023. 7. 18. 00:34
깨끗한 코드와 오류 처리는 확실히 연관성이 있다. 오류처리는 중요하다. 하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드라고 부르기 어렵다. 오류 코드보다 예외를 사용하라 (3장 함수에도 나왔다. 오류 코드보다 예외를 사용하라! → 오류 코드 대신 예외(ex. try/catch)를 사용하면 오류 처리 코드가 원래 코드에서 분리되어 코드가 깔끔해진다.) [클린코드] 함수 3-2 함수가 읽기 쉽고 이해하기 쉬운 이유는 무엇일까? 의도를 분명히 표현하는 함수를 어떻게 구현할 수 있을까? 함수에 어떤 속성을 부여해야 처음 읽는 사람이 프로그램 내부를 직관적으로 파 ayoung0073.tistory.com 논리가 오류 처리 코드와 뒤섞이지 않는다. (코드품질 굳) Try-Catch-..
-
[클린코드] 객체와 자료구조📚 개발 도서/클린코드 2023. 7. 16. 17:35
변수를 비공개로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다. 그렇다면 왜 수많은 프로그래머가 조회함수와 설정함수를 당연하게 공개하여 비공개 변수를 외부에 노출할 것인가?라는 질문으로 시작한다. 자료 추상화 변수 사이에 함수라는 계층을 넣는다고 구현이 저절로 감춰지지는 않는다. 구현을 감추기 위해서는 추상화가 필요하다. 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다. 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. 자료/객체 비대칭 객체 vs 자료구조? 객체..
-
[클린코드] 시스템📚 개발 도서/클린코드 2023. 7. 1. 16:18
“복잡성은 죽음이다. 개발자에게서 생기를 앗아가며, 제품을 계획하고 제작하고 테스트하기 어렵게 만든다." - 레이 오지, 마이크로소프트 최고 기술 책임자 이 장에서는 높은 추상화 수준, 즉 시스템 수준에서도 깨끗함을 유지하는 방법을 살펴본다. 시스템 제작과 시스템 사용을 분리하라 construction과 use는 아주 다르다. 소프트웨어 시스템은 (애플리케이션 객체를 제작하고 의존성을 서로 ‘연결’하는) 준비 과정과 (준비 과정 이후에 이어지는) 런타임 로직을 분리해야 한다. 설정 논리는 일반 실행 논리와 분리해야 모듈성이 높아진다. public Service getService() { if (service == null) service = new MyServiceImpl(...); return serv..
-
[클린코드] 클래스📚 개발 도서/클린코드 2023. 6. 15. 21:56
코드의 표현력에 아무리 신경 쓸지라도 좀 더 차원 높은 단계까지 신경쓰지 않으면 깨끗한 코드를 얻기 어렵다. 클래스 체계 추상화 단계는 순차적으로 내려간다. 그래서 프로그램은 신문 기사처럼 읽힌다. 캡슐화 : 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다. 클래스는 작아야 한다 클래스는 작아야 한다. 함수는 물리적인 행 수로 측정했지만, 클래스는 클래스가 맡은 책임을 센다. 클래스 이름은 해당 클래스 책임을 기술해야 한다. 간결한 이름이 떠오르지 않는다면, 필경 클래스 크기가 너무 커서 그렇다. 클래스 이름에 Processor, Manager, Super 같은 모호한 단어가 포함되어있다면, 클래스 책임이 너무 낳아서다. 단일 책임 원칙 (Single Responsibility Principle, SRP..
-
[클린코드] 함수📚 개발 도서/클린코드 2023. 5. 7. 11:08
3-2 함수가 읽기 쉽고 이해하기 쉬운 이유는 무엇일까? 의도를 분명히 표현하는 함수를 어떻게 구현할 수 있을까? 함수에 어떤 속성을 부여해야 처음 읽는 사람이 프로그램 내부를 직관적으로 파악할 수 있을까? 이 질문들과 함께 챕터를 읽어보자. 작게 만들어라! // 3-3 public static String renderPageWithSetupAndTeardowns ( PageData pageData, boolean isSuite) throws Exception { if (isTestPage(pageData)) includeSetupAndTeardownPages(pageData, isSuite); return pageData.getHtml(); } → 이 함수는 이야기처럼 술술 읽혀진다. 블록과 들여쓰기 ..
-
[클린코드] 의미 있는 이름📚 개발 도서/클린코드 2023. 4. 29. 11:33
다음 규칙들을 적용해서 코드 가독성이 높아져보자! 의도를 분명히 밝혀라 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 그릇된 정보를 피하라 일관성이 떨어지는 표기법은 그릇된 정보다. 의미있게 구분하라 컴파일러나 인터프리터만 통과하려는 생각으로 코드를 구현하는 프로그래머는 스스로 문제를 일으킨다. 다른 클래스를 ProductInfo 혹은 ProductData라 부른다면 개념을 구분하지 않은 채 이름만 달리한 경우다. Info나 Data는 a, an, the와 마찬가지로 의미가 불분명한 불용어다. 불용어는 중복이다. 읽는 사람이 차이를 알 수 있도록 이름을 지어라. 이름이 달라야 한다면 의미도 달라져야한다. 발음하기 쉬운 이름을 사용하라 발음하기 쉬운 단어를 사용할 때 ..
-
[클린코드] 깨끗한 코드📚 개발 도서/클린코드 2023. 4. 18. 20:17
코드가 존재하리라 코드는 요구사항을 표현하는 언어이다 언어는 요구사항에 가깝게 만들 수 있다. 요구사항에서 정형구조를 뽑아낼 수 있는 도구를 만들 수 있다. 나쁜 코드 회사가 망한 원인은 바로 나쁜 코드 탓이었다. 버그가 남아있고, 프로그램이 죽는 횟수가 늘고, 출시하기에 바빠 코드를 마음대로 짜고, 기능을 추가할수록 엉망이 되어갔다. 고행(wading) 나쁜 코드를 헤쳐나간다. 르블랑의 법칙 나중은 결코 오지 않는다. 나중에 손보겠다고 한 코드와 돌아간다는 사실에 안도감을 느끼며 위로함 → 나중은 결코 오지 않는다. 나쁜 코드로 치르는 대가 나쁜 코드가 쌓일수록 팀 생산성이 떨어진다. 태도 “우리에게”라는 단어가 자주 나온다 좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다. 원초적 난제 나..