본문 바로가기

코드 장인16

[4부 프로그래머의 무리] Chapter18 안전한 소스 습관 소스 컨트롤과 셀프 컨트롤 우리가 싸워야 할 대상 우리 자신, 그리고 우리 자신의 바보 같은 실수 동료, 그리고 동료의 바보 같은 실수 협동 개발 과정에서 일어나는 문제점 기계적인 고장 (컴퓨터 파열이나 하드 디스크 증발) 소프트웨어를 악용하고 싶어 하는 도둑들 당신의 정신 건강과 당신의 행복과 당신의 생계가 모두 이 장의 내용에 달려 있다 우리의 책임 안전하고 보안이 잘 된, 접근이 용이한, 재생산이 가능한, 유지보수가 쉬운 소스 컨트롤 이 툴은 소스 코드의 중앙 창고 역할을 하면서, 그에 대한 접근 권한을 부여하고, 소스 코드에 대한 동시 수정을 정렬하는 일을 한다 소스 컨트롤은 소프트웨어 개발에 필수적인 툴. 팀의 안정한 협동 작업을 위해서 극히 중요. 엄격한 잠금 변경하지 않은 파일을 다시 놓아줄.. 2017. 11. 26.
[4부 프로그래머의 무리] Chapter17 여기 우리 함께 서 있네 팀워크와 개인 프로그래머 대부분 생산되는 코드를 훌륭한 팀워크의 결과이다. 팀워크는 프로젝트의 생존을 위해서 극히 중요한 요소이다. 소프트웨어 개발팀 - 큰 그림 개인은 하나의 팀에만 속하는 것이 아니라 상위 팀에도 속할 수 있다. 즉, 여러 팀에 속하게 되는 것이다. 개인 소프트웨어 개발에 관한 전문 기술 지적인 스킬 학습 동기 팀 사회적인 효과 팀 내의 영향력 프로젝트 의사소통 계획 자원 관리 사업부 사내 정치 문화 절차 회사 다른 회사와의 상호작용 비즈니스 전략 인센티브 계획 사회적인 상호 작용, 협동, 의사소통 스킬이 필요하다. 팀워크 스킬이 소프트웨어에 영향을 미치는 곳이 바로 이곳이다. 팀의 조직 팀 관리의 접근 방법 프로젝트는 동료를 기반으로 관리될 수 있다. 책임의 분할 수직형 팀조직 수평.. 2017. 11. 24.
[4부 프로그래머의 무리] Chapter16 코드 멍키 프로그래밍에 대한 올바른 태도와 접근 방법 기르기 코드 멍키 주식회사 각 유형의 코드 멍키가 흥미를 갖는 것은? 각 유형의 코드 멍키와 함께 일하는 방법 각 유형의 코드 멍키가 발전할 수 있는 방법 각 유형의 코드 멍키로부터 우리가 배울 수 있는 것들 나 자신에게 질문하기 당신은 어느 유형에 속하는 프로그래머입니까? 여기에 있는 설명이 당신의 프로그래밍 스타일과 얼마나 가깝게 매치됩니까? 이 설명에서 당신의 코딩 태도를 발전시키는 데 도움이 될 만한 어떤 교훈을 얻었습니까? 당신은 이런 유형에 속하는 사람을 얼마나 많이 알고 있습니까? 그 사람은 가까운 동료입니까? 어떻게 해야 그들과 일을 더 잘 할 수 있을까요? 열성적인 코더 강점 자기 일을 사랑하고, 좋은 코드를 작성하기를 진심으로 원한다 약점 성급.. 2017. 11. 19.
[3부 코드의 모습] Chapter15 소프트웨어의 진화 또는 혁명? 소프트웨어의 부패 언제든지 소프트웨어 개발 기간 중에서 유지보수 국면이 가장 오래 걸린다 프로젝트가 완료되었다고 간주된 다음에 더 많은 코드가 작성된다 유지보수 프로그래머는 원작성자의 머리 속에 있는 코드 모델을 알지 못할 수 도 있다; 그것이 적절하지 못한 수정의 원인이 된다 코드를 수정하다가 품질이 떨어지기는 아주 쉽다는 사실을 알아두자. 시스템을 더 나쁘게 만드는 변경을 하고서 만족스러워하지 말자 경고 신호 규모가 큰 클래스와 복잡하고 이해하기 어려운 함수들이 코드 여기저기에 많이 흩어져 있다 함수 이름이 암호 같거나 오해를 하게 만든다 구조가 없다: 어떤 기능을 어디에서 찾을지가 명료하지 않다 중복이 있다: 똑같은 일을 하는 코드 조각이 여러 번 나타난다 커플링이 높다: 의존성이 높다 데이터가 여.. 2017. 11. 18.
[3부 코드의 모습] Chapter14 소프트웨어 아키텍처 소프트웨어 아키텍처란? 상위 수준의 설계 소프트웨어의 청사진 아키텍처 수준의 관점 핵심이 되는 소프트웨어 모듈들을 식별 어느 컴포넌트가 어느 컴포넌트와 통신하는지 식별 여러 가지 서브시스템의 올바른 역할과 책임을 명시하고, 시스템에 있는 모든 중요한 인터페이스들의 특성을 식별하고 결정하도록 도와준다 우아하게 개발~~ 매번 나오는 이야기 아키텍처는 소프트웨어 시스템의 설계와 미래 성장에 가장 큰 영향력을 미친다. 그러므로 개발 단계에서 일찍 올바른 아키텍처를 만들어두는 것이 극히 중요 조망도(view) 아키텍처를 설계하는 과정에서도 여러 개의 소프트웨어 조망도를 개발해야 한다 개념 조망도 시스템에서 중요한 부분과 그 부분들의 상호연결을 보여주는 조망도 구현 조망도 실제로 구현된 모듈을 가지고 제시 프로세스.. 2017. 11. 17.
[3부 코드의 모습] Chapter13 웅대한 설계 바람직한 소프트웨어 설계를 하는 방법 코드 설계의 품질은 원숙한 프로그래머임을 나타내는 지표다. 설계로서의 프로그래밍 프로그래밍이라는 행위는 초기에 설계하면서 결정했던 것을 검증하고, 나머지 설계 작업을 수행하는 것이다 설계는 당연히 먼저 해야 하는 일이다 우리는 무엇을 설계하는가? 설계는 개발 프로세스의 각 단계에서 주어진 일을 구성요소들로 나누고, 각 구성요소가 작동하는 방법을 생각해내는 과정이다 소프트웨어의 설계 수준 시스템아키텍처 아키텍처 설계는 전체 시스템의 성능과 특성에 미치는 영향력이 가장 크고, 특정한 코드 행에 미치는 영향력은 가장 적다. 모듈/컴포넌트 각각의 서브시스템을 알기 쉬운 더 작은 모듈들로 나누는 것이다 나중에 쉽게 바꿀 수 없다 클래스와 데이터 타입 모듈을 한입 크기의 덩어리.. 2017. 11. 16.