Jan 10, 2018 - POP_part13

사상 - 프로그래밍 이데올로기

UNIX 사상

UNIX의 근간이 되는 암묵적인 지식 UNIX는 엄청난 생명력이 있다 1969년에 등장했다.

모듈화의 원칙

소프트웨어는 복잡하다 하지만 복잡도 정도는 낮출 수 있다. 코드중 관계성이 높은 요소를 모아 모듈을 작성한다. 복잡한 정도를 제어하는게 원래 프로그래밍 본질이다.

모듈이 제공하는 인터페이스는 좁게 만들자 이렇게 하면 기능의 변경을 모듈안으로 한정 시킨다.

명확성의 원칙

코드는 교묘하게가 아니라 명확하게 작성해야 된다. 성능을 조금 높이는 대신에 복잡함을 대폭 끌어 올리는 식의 트레이드오프를 해서는 안됨 코드를 읽는 것은 기계가 아닌 사람이다. 사람이 읽기 쉽게 작성해야 된다. 명확하지 않으면 개선한다.

구성의 원칙

필터로 조립한다. 이는 소프트웨어를 가능한 단순하게 필터로 만든다는 뜻 필터로 동작하는 소프트웨어는 상호연결이 간단하다.

분리의 원칙

메커니즘에서 정책을 분리한다. 프론트엔드와 백엔드를 분리

단순성의 원칙

코드는 단순해 지도록 설계한다. 코드는 그냥 두면 복잡해진다.

  • 기술을 과시하고자 하는 프로그래머의 심리
  • 기능에 대한 외부로부터의 요구

단순함을 아픔답게 여기는 문화 구축

참조


Jan 9, 2018 - POP_part12

사상 - 프로그래밍 이데올로기

7가지 설계 원리

단순 원리

단순함을 중시한다. 버그는 복잡한곳에서 나온다

동형 원리

형태를 중요시한다. 코드에 일관성을 가지게 하자

대칭 원리

형태의 대칭성을 중시한다. 참일때 처리가 있으면 거짓일떄 처리가 있어야 된다

계층 원리

구조의 계층성을 중시한다. 코드각각의 추상 수준을 의식해서 계층 구조를 구축하자.

선형 원리

처리의 직선적 흐름을 중시한다. 분기가 작은 코드를 작성한다.

명증 원리

로직의 명증성(확실하게 증명)을 중시한다.

안전 원리

안전성을 중시한다. null이 입력될수 없는구조지만 null 체크를 한번더 한다.

참조


Jan 8, 2018 - POP_part11

사상 - 프로그래밍 이데올로기

아키텍처 기본 기법

상호 운영성

소프트웨어는 시스템의 일부이며 독립해서 존재하는것이 아니고 다른 시스템이나 환경과 빈번하게 상호작용한다. 외부 기능이나 자료구조로의 접근이 명확하게 정의된 아키텍처를 설계 표준 규격을 선택해야 된다.

효율성

  • 시간 효율성
  • 자원 효율성

리소스는 한정적 간접화를 고려해서 느슨한 결합을 추천

신뢰성

  • 결함 허용력 - 소프트웨어 장애에도 정상적인 동작을 계속 유지하는 능력
  • 견고성 - 부정한 방법이나 입력실수로 부터 보호 하는 능력

테스트 용이성

효과적으로 테스트 하는 능력 작은 단위의 테스트가 가능하게 설계하자.

재사용성

  • 재사용하는 소프트웨어 개발
  • 재사용을 위한 소프트웨어 개발

소프트웨어의 품질을 높이려면 가능한 만들지 않고 어디서인가 빌려와야 된다. 플러그인 아키텍쳐

재사용 가능한 모듈 작성시 2가지 3의 법칙

  • 난이도 3배의 법칙
  • 테스트 3종류의 법칙

탈착 가능 컴포넌트인 프레임워크

참조