도서 2024. 9. 6. 20:57객체지향의 사실과 오해

협력하는 객체들의 공동체 자바의 정석에서도 그렇고 객체지향이란 실제 세상에 있는 것들을 코드상으로 가져오는 즉 직접적이고  직관적으로 모델링 할 수 있는 패러다임이라고 하기도 한다. 다만 실제 세상은 그런 객체는 많이 없고 유사성 찾기 어려운 경우가 일반적이다 . 객체지향의 목표는 실세계를 모방하는 것이 아닌 새로운 세계를 창조하는 것!  그럼에도 불구하고 객체와 실세계를 비교하면서 개념을 동일시하게 되는 이유는 객체의 특징인 캡슐화와 자율성을 설명하기에 실세계의 생명체와 비유하는것이 이해하기 쉽기 때문이다.  연결 완전성 정의 : 시스템의 구성 요소들이 서로 잘 연결되고 상호작용할 수 있도록 설계하는 것을 의미합니다. 이는 객체 간의 관계와 상호작용을 명확하게 정의하여 시스템의 유연성과 확장성을 높이는..

클린코드 : 점진적인 개선
도서 2024. 7. 27. 23:00클린코드 : 점진적인 개선

점진적인 개선 어떻게 짰느냐고?- 프로그래밍은 과학보다 공예 - 깨끗한 코드는 바로 나오지 않는다. 초안부터 작성후 점진적으로 고쳐야 한다 점진적으로 개선하다- 점진적인 개선을 위해 필요한 것은 TDD- 점진적으로 수정해도 해당 코드가 유효한지 빠르게 파악 가능  결론- 그저 돌아가는 코드로 만족하지 마라- 서두르지 말고 시간을 들여 설계 그리고 개선해 코드를 작성하자   코드  해당 장에서는 대부분 코드의 수정 사항을 보여주면서 어떻게 개선했는지 보여준다. 처음에는 boolean 변수만 수정해서 진행했으나 그 외 String, Integer등 인수의 숫자를 늘리면 늘릴수록 코드는 길어지고 복잡해지며 답도 없어진다. 그래서 인수 유형을 HashMap으로 선언한 다음 스키마 요소를 분석해서 진짜 유형으로 ..

클린코드 : 시스템, 창발성, 동시성
도서 2024. 7. 21. 02:42클린코드 : 시스템, 창발성, 동시성

시스템 도시를 세운다면- 도시는 큰 그림을 그리는 사람과 작은 사항에 집중하는 사람들이 모여서 제대로 된 기능을 한다- 추상화와 모듈화로 시스템을 깨끗하게 유지가능 시스템 제작과 시스템 사용을 분리하라 - 시스템웨어 시스템은 준비과정과 런타임 로직으로 분리를 해야한다 - 관심사 분리를 하자  의존성 주입- 사용과 제작을 분리하는 메커니즘 중 하나 - 제어 역전 : 한 객체가 맡은 보조 책임을 새로운 객체에게 넘기는 것 , 새로운 객체는 넘겨받은 책임으로 단일 책임 우너칙을 지킨다- 보통 필요한 객체는 실행시점에서 이미 만들어져있고 생성자 인수나 설정자 메서드를 사용해서 의존성을 설정한다 확장- 처음부터 어떻게 규모를 다 알고 설계하냐? 처음엔 작게 그리고 점차 키우는게 정석이다- 오늘 주어진 사용자 스토..

클린 코드 : 오류 처리 , 경계 , 단위 테스트, 클래스
도서 2024. 7. 14. 00:54클린 코드 : 오류 처리 , 경계 , 단위 테스트, 클래스

오류 처리 오류 코드보다 예외를 사용하라 - 예외를 사용하는 것이 오히려 더 깔끔할 수 있다.  Try-Catch-Finally문부터 작성하라 - 예외 발생할 코드를 작성할 때는 try-catch-finally 서식을 쓰자  미확인 예외를 사용하라미확인 예외(Unchecked Exception)란?미확인 예외는 프로그램 실행 중 발생할 수 있는 예외 상황을 나타냅니다.이러한 예외는 반드시 처리하지 않아도 되며, 프로그램이 계속 실행될 수 있습니다.대표적인 미확인 예외로는 NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException 등이 있습니다. 예외에 의미를 제공하라 - 오류 메세지에 정보를 담아 예외와 함께 던져라 - 예외 던질 ..

프로그래머스 폰켓몬
프로그래밍/알고리즘 2024. 7. 13. 16:23프로그래머스 폰켓몬

문제당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다.첫 번째(3번), 두 번째(1번) 폰켓몬을 선택첫 번째(3번), 세 번째(2번) 폰켓몬을 선택첫 번째(3번),..

클린코드 : 객체와 자료 구조
도서 2024. 7. 7. 01:50클린코드 : 객체와 자료 구조

객체와 자료구조 자료 추상화- 자료를 세세하게 공개하기보단 추상적인 개념으로 표현하는 것이좋음  자료/객체 비대칭- 객체는 추상화를 사용하여 자료를 다루는 함수만 공개한다 (자료 구조를 사용하는) 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 반면, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다.절차적인 코드는 새로운 자료 구조를 추가하기 어렵다. 그러려면 모든 함수를 고쳐야 한다. 객체 지향 코드는 새로운 함수를 추가하기 어렵다. 그러려면 모든 클래스를 고쳐야 한다.  디미터 법칙- 모듈은 자신이 조작하는 객체의 속사정을 몰라야한다.- 객체는 자료를 숨기고 함수를 공개한다- 객체는 조회 함수로 내부 구조를 공개하면 안 됨  기차 충돌- 메서드..

클린코드 : 형식 맞추기
도서 2024. 7. 7. 01:05클린코드 : 형식 맞추기

형식 맞추기 형식을 맞추는 목적- 가독성을 위해서 적절한 행 길이를 유지하라 신문기사처럼 작성하라- 이름은 간단하고 알기 쉽게 - 아래로 내려갈수록 세세하게  개념은 빈 행으로 분리하라- 메서드 간 행 띄우기  세로 밀집도- 서로 밀접한 코드 행은 세로로 가까이 놓여야한다 // 의미 없는 주석을 제거함으로써 코드가 한눈에 들어온다.// 변수 2개에 메소드가 1개인 클래스라는 사실이 드러난다.public class ReporterConfig { private String m_className; private List m_properties = new ArrayList(); public void addProperty(Property property) { m_properties.add(property);..

클린 코드 : 주석
도서 2024. 7. 7. 00:26클린 코드 : 주석

주석 부정확한 주석은 아예 없는 주석보다 훨씬 나쁘다  주석은 나쁜 코드를 보완하지 못한다 - 일반적으로 주석을 사용한다는 것은 코드 품질이 나빠서 별도의 설명이 필요하다는 뜻이다 - 주석을 달 시간에 코드를 정리해라 - 그러고보니 js는 주석 없이 작성하던데 이걸 의도한 건가?  코드로 의도를 표현하라 - 그냥 주석 달 생각하지 말고 영단어로 메서드 만들어서 보기 좋게 하자 if (employee.isEligibleForFullBenefits()) 좋은 주석- 법적인 주석 // Copyright (C) 2003, 2004, 2005 by Object Montor, Inc. All right reserved.// GNU General Public License- 정보 제공하는 주석- 의도를 설명하는 주석..

테스트는 []다
프로그래밍/스프링 2024. 6. 29. 16:31테스트는 []다

테스트는 문서다  테스트는 문서다 - 프로덕션 기능을 설명하는 테스트 코드 문서 - 다양한 테스트 케이스를 통해 프로덕션 코드 이해하도록 도와줌 - 한 사람의 경험을 팀 차원으로 모두 공유 가능  우리는 항상 팀으로 일하기 때문에 좋은 테스트 코드를 문서로 작성해야한다  DisplayName을 섬세하게  @DisplayName("음료 1개 추가하면 주문 목록에 담긴다") // 테스트명을 적어준다 @Test void add(){ CafeKiosk cafeKiosk = new CafeKiosk(); cafeKiosk.add(new Americano()); assertThat(cafeKiosk.getBeverages().get(0).getName()).is..

클린 코드 : 함수
도서 2024. 6. 29. 15:59클린 코드 : 함수

함수  작게 만들어라 - 함수를 작게 만들자 - 모든 함수를 정말 작게 못해도 4-6줄 정도로 줄여야 하나본데? 이러면 로직 넣을 구멍이 있나...? 한 가지만 해라! - 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야한다. 그 한가지만을 해야 한다  추상화 수준 참고 https://onestone-dev.tistory.com/3 [CleanCode] 함수의 추상화 수준이란?오랜만에 CleanCode를 다시 읽어보고 있는데 함수의 추상화 수준에서 책 읽기를 멈추고 3번 다시 읽었다. 아무래도 책의 추상화 수준이 높은 단계 였던 것 같다. "메서드는 한 가지만 해라!"라는 말onestone-dev.tistory.com Switch 문 - 일반적을 잘 안 쓰는 것이 좋다고 함 - 다형적 객체를 생성하는..

728x90
728x90
image