본문 바로가기

분류 전체보기591

10. 클래스 클래스 체계 클래스를 정의하는 표준 자바 관례 1. 정적 공개 상수 - public static 2. 정적 비공개 변수 3. 비공개 인스턴스 변수 4. 공개 함수 5. 비공개 함수 - 자신을 호출하는 공개 함수 직후에 삽입 --> 위 순서대로 작성함으로서 추상화 단계가 순차적으로 내려오게 되고, 프로그램이 신문 기사처럼 읽히게 된다. 클래스는 작아야 한다! 클래스 만드는 규칙 첫째 클래스는 작아야 한다. 둘째 클래스는 더 작아야 한다. 그럼 여기서 생기는 의문은 "클래스는 얼마나 작아야 하는가?" 이다. 이전에 함수는 물리적인 행 수로 크기를 측정했다. 클래스는 클래스가 맡은 책임을 센다. 클래스 이름은 해당 클래스 책임을 기술해야 한다. 실제로 작명은 클래스 크기를 줄이는 첫 번째 관문이다. 간결한 이.. 2022. 10. 29.
6. 객체와 자료구조 해당 장은 결론 내용이 가장 해당 장을 내용을 잘 정리해 놓았어서 결론 먼저 기입 결론 객체는 동작을 공개하고 자료를 숨긴다. 그래서 기존 동작을 변경하지 않으면서 새 객체 타입(자료구조)은 추가하기 쉬운 반면, 기존 객체에 새 동작을 추가하기는 어렵다. 자료 구조는 별 다른 동작 없이 자료를 노출한다. 그래서 기존 자료 구조에 새 동작을 추가하기는 쉬우나, 기존 함수에 새 자료구조를 추가하기는 어렵다. 어떤 시스템을 구현할 때, 개로운 자료 타입을 추가하는 유연성이 필요하면 객체가 더 적합하다. 새로운 동작을 추가하는 유연성이 필요하면 자료 구조와 절차적인 코드가 더 적합하다. 상황에 따라 편견 없이 최적의 방향으로 구현한다. 자료 / 객체 비대칭 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수.. 2022. 10. 27.
5. 형식 맞추기 적절한 행 길이를 유지하라 개념은 빈 행으로 구분하라 세로 밀집도 서로 밀접한 코드 행은 세로로 가까이 놓여야 한다. 변수 선언 변수는 사용하는 위치에 최대한 가까이 선언한다. 인스턴스 변수 인스턴스 변수는 클래스 맨 처음에 선언한다. 변수간에 세로로 거리를 두지 않는다. 잘 설계한 클래스는 클래스의 많은(혹은 대다수) 메서드가 인스턴스 변수를 사용하기 때문이다. 종속 함수 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다. 또한 가능하다면 호출하는 함수를 호출되는 함수보다 먼저 배치한다. 그러면 프로그램이 자연스럽게 읽힌다. 2022. 10. 26.
3. 함수 작게 만들어라 함수는 작게 만들수록 좋다. '''켄트가 코드를 보여줬을 때 나는 함수가 너무도 작아 깜짝 놀랐다. 그때까지 나는 장황하게 긴 스윙 프로그램 함수에 익숙했다. 그런데 Sparkle은 모든 함수가 2줄, 3줄, 4줄 정도였다. 각 함수가 너무도 명백했다. 각 함수가 이야기 하나를 표현했다. 각 함수가 너무도 멋지게 다음 무대를 준비했다. 이것이 답이다!''' 블록과 들여쓰기 if / else / while 문 등에 들어가는 블록은 한 줄이어야 한다. 그러면 바깥을 감싸는 함수가 작아질 뿐 아니라, 블록 안에서 호출하는 함수의 이름을 적절히 짓는다면, 코드를 이해하기도 쉬워진다. 이 말은 중첩 구조가 생길만큼 함수가 커져서는 안 된다는 뜻이다. 그러므로 함수에서 들여쓰기 수준은 1단이나 2단을.. 2022. 10. 24.