나는 이렇게 본다 38

행동이 상태를 결정한다.

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다.설명을 위한 글이 아니므로 내용이 정확하지 않을 수 있습니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 02 이상한 나라의 객체 요약 정리 객체는 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태를 가진다. 객체는 저장된 상태와 실행 가능한 코드를 통해 구현된다. 숫자, 문자열, 양, 속도, 시간, 날짜, 참/거짓과 같은 단순한 값들은 객체가 아니다. 단순한 값들은 다른 객체의 상태를 표현하기 위해 사용한다. 객체의 상태를 구성하는 모든 특징을 객체의 프로퍼티라고 한다. 정적인 프로퍼티 사람이라면 키, 성별, 체력 등이 될 수 있고 변경되지 않고 고정되기 때문에 ‘정적’이다. (cf. key) 동적인 프로퍼티 값(va..

Class-based Views

Class-based Views 클래스 기반 뷰 Django's class-based views are a welcome departure from the old-style views. 장고의 클래스 기반 뷰가 기존 뷰 스타일로 부터 분리된 것은 반가운 일이다. REST framework provides an APIView class, which subclasses Django's View class. 레스트 프레임워크는 장고의 뷰 클래스를 하위 클래스로 분류하는 APIView 클래스를 제공한다. APIView classes are different from regular View classes in the following ways: APIView 클래스들은 일반적인 뷰 클래스들과 다음과 같은 차이점이..

일하는 객체들이 서로 협력하는 관계를 구축하는 것

제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 01 / 협력하는 객체들의 공동체 요약 정리 객체지향의 목표는 실세계를 모방하는 것이 아니다. 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다. 현실 세계와 비유하는 것은 '상태'와 '행위'를 [캡슐화]하는 소프트웨어 객체의 [자율성]을 설명하는 데 효과적이기 때문 객체는 상태와 행위를 하나의 단위로 묶는 자율적인 존재 객체지향에서 가장 중요한 개념 세 가지는 '역할', '책임', '협력'이다. 여러 객체가 동일한 역할을 수행할 수 있다. 역할은 책임(일), 임무를 의미한다. (손님, 점원, 바리스타) 역할은 대체 가능하다. (부품) 책임을 수행하는 방법(일하는 방법)은 객체가 자율적으로 선택할 수 있다. → 다형성과 관련 객체는 동시에..

원활한 소통을 장려하는 코드 형식은 무엇일까?

제목 : 클린 코드 저자 : 로버트 C. 마틴 범위 : 5장 형식 맞추기 기억하고 싶은 것 '돌아가는 코드'가 전문 개발자의 일차적인 의무라 여길지도 모르겠다. 하지만 이 책을 읽으면서 생각이 바뀌었기 바란다. 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 원활한 소통을 장려하는 코드 형식은 무엇일까? 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다. 신문기사 처럼 작성하라 소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명한다. 아래로 내려갈수록 의도를 세세하게 묘사한다. 마지막에는 저차원 함수의 세부 내역이 나온다. 개념은 빈 행으로 분리하라. 타당한 근거가 없다면 서로 밀집한 개념은 한 파일에 속해야 마땅하다. 연관성이란 한 개념을 이해하는 데 다른 ..

주석은 언제나 실패를 의미한다.

제목 : 클린 코드 저자 : 로버트 C. 마틴 범위 : 4장 주석 기억하고 싶은 것 우리는 코드로 의도를 표현하지 못해, 그러니까 실패를 만회하기 위해 주석을 사용한다. 의도를 표현할 능력이 있다면 주석은 거의 필요하지 않으리라. 자신이 저지른 난장판을 주석으로 설명하려 애쓰는 대신에 그 난장판을 깨끗이 치우는 데 시간을 보내라! 좋은 주석이란? 법적인 주석 정보를 제공하는 주석 (예 : 추상 메서드가 반환할 값 설명) 그럼에도 가능하다면, 함수 이름에 정보를 담는 편이 좋다. 의도(목적)를 설명하는 주석 의미를 명료하게 밝히는 주석 결과를 경고하는 주석 중요성을 강조하는 주석 나쁜 주석이란? 함수나 변수로 표현할 수 있다면 주석을 달지 마라 배너는 눈에 띄며 주의를 환기한다. 그러므로 반드시 필요할 때..

함수를 어떻게 짜죠?

제목 : 클린 코드 저자 : 로버트 C. 마틴 범위 : 3장 함수 기억하고 싶은 것 작게 만들어라! 함수를 만드는 첫째 규칙은 '작게!'다. 20줄도 길다. 들여 쓰기 수준은 1단이나 2단을 넘어서면 안 된다. 함수는 한 가지를 해야 한다. 그 한 가지를 잘해야 한다. 그 한 가지만을 해야 한다. 한 가지란 무엇인가? 지정된 함수 '이름' 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다. 확인하는 방법, 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 셈이다. 함수 당 추상화 수준은 하나로! 근본 개념 세부 사항 ex) getHtml() .append("\n") 추상화 수준을 일관되게 적용할 것 위에서 아래로 추상화 수준이 낮은 함수가 위치한..

의미 있는 이름

제목 : 클린 코드 저자 : 로버트 C. 마틴 범위 : 2장 의미 있는 이름 기억하고 싶은 것 그릇된 정보를 피하라 서로 흡사한 이름을 사용하지 않도록 주의한다. 의미 있게 구분하라 (읽는 사람이 차이를 알도록 이름을 지어라) 연속적인 숫자를 덧붙인 이름은 의도적인 이름과 정반대다. 요지는 zork라는 변수가 있다는 이유만으로 theZork라 이름 지어서는 안 된다는 말이다. 주의 : info, data, variable, table 등 발음하기 쉬운 이름을 사용하라 검색하기 쉬운 이름을 사용하라 긴 이름이 짧은 이름보다 좋다. 검색하기 쉬운 이름이 상수보다 좋다. 이름 길이는 범위(스코프) 크기에 비례해야 한다. 전역변수나 상수는 검색하기 쉬운 이름이 바람직하다. 자신의 기억력을 자랑하지 마라 문자 하..

깨끗한 코드야말로 더 빨리 가는 유일한 방법

제목 : 클린 코드 저자 : 로버트 C. 마틴 범위 : 1장 깨끗한 코드 기억하고 싶은 것 궁극적으로 코드는 요구사항을 표현하는 언어라는 사실을 명심한다. 우리 모두는 좋은 코드가 중요하다는 사실을 안다. 왜? 오랫동안 나쁜 코드에 시달려왔으니까. 회사가 망한 원인은 바로 나쁜 코드 탓이었다. 나중에 손보겠다고 생각한 경험이 있다. (중략) 나중은 결코 오지 않는다. 나쁜 코드가 쌓일수록 팀 생산성은 떨어진다. 그러다가 마침내 0에 근접한다. 좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다. 나쁜 코드의 위험을 이해하지 못하는 관리자 말을 그대로 따르는 행동은 전문가답지 못하다. 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다. 깨끗한 코드는 한 가지를 제..

소프트웨어는 80% 이상이 '유지보수'다

제목 : 클린 코드 저자 : 로버트 C. 마틴 범위 : 추천사 ~ 들어가면서 기억하고 싶은 것 소프트웨어는 80% 이상이 소위 "유지보수"다. 사소한 것에 정직해야 한다. (중략) 자신에게 정직하라는 뜻이다. 깨끗한 코드를 작성하는 방법은 배우기 어렵다. (중략) 고생을 해야한다. 떠오르는 생각이나 질문 유지보수를 즐길 수 있어야 개발을 더 즐길 수 있겠구나 자신에게 정직한 것은 코드 외에 삶에서도 정말 중요한 것 같다 이론을 배우면 반드시 코드로 구현해보자. 반드시! 더 알아보고 싶은 것 인터페이스는 무엇이고, 인터페이스가 프로그램이라는 것은 어떤 의미일까? 참고 : https://enjoyplaying.tistory.com/33 설계가 코드 속에 존재한다는 것은 어떤 의미일까?