일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- colemak
- 복사한것을파일로
- ortholinear
- 프론트엔드 개발환경
- 쿼티
- 개발자 도구 활용
- version specifications
- 프리오닉
- JavaScript
- 날개셋 한글 입력기
- 이벤트 위임
- Sync & Async
- 영수증 가계부
- Paste Into File
- 브라우저 렌더링
- 글자 지우기
- 콜맥
- static 키워드
- details marker 제거
- State Control
- olkb
- super 메소드
- 구현 패턴
- Runtime Execution
- 자소 단위 삭제 해제
- 오버로딩과 오버라이딩
- 글자 단위 삭제
- 절차 지향과 객체 지향
- 탭 관리 프로그램
- 창 그룹화
- Today
- Total
What got you here won't get you there
너 왜 코드 그렇게 짰어? 본문
내가 왜 이렇게 프로그램을 짰는지 어떻게 설명할 수 있을까?
켄트 벡의 구현 패턴
프로그램의 철학이나 방향성을 정립 - 합리주의와 상대주의
상대주의 - 한 프로그램을 특정하게 정의할 수 없다.
- 어떤 클래스는 다른 클래스의 부모 클래스임과 동시에 자식 클래스 일 수 있다.
- JVM 입장에서 OS는 플랫폼이지만, 자바 프로그램 입장에서 JVM은 플랫폼이다.
이를 특정하기 위한 모두가 동의할 수 있는 기준을 잡기 위해 합리주의가 동원된다.
가치 - 의사소통, 단순함, 유연함
너 왜 그렇게 짰어?
의사소통 - 이렇게 짜니까 팀원들이 잘 이해해서요. 의사소통을 잘 하려구요.
단순함 - 이전 구조가 복잡해서 유지보수가 힘들어서 단순한 구조로 바꿨어요.
유연함 - 나중에 여러 기능을 더 추가할 수 있도록 짰어요.
원칙 - 지역화, 중복제거, 대칭성
원칙은 항상 지켜져야 하는 것.
지역화 - 전역변수 쓰지말고 지역변수 써. 전체적으로 영향이 가지 않도록 해라. 지역화 할 수 있을만큼 지역화 해.
중복제거 - 야 여기 로직 중복됐는데? 하나로 만들어. 왜? 수정할 때 두 곳 모두 수정하기 힘들잖아.
대칭성 - 야 여기 setter는 있는데 getter가 없는데? 특별한 이유가 있는게 아니면 수정해.
패턴 - 개발론, 설계론, 각종 적용 패턴
경험에 의한 연역적 결과
개발론 - 선배들이 이렇게 개발해봤는데 좋던데?
설계론 - 선배들이 이렇게 설계해봤는데 좋던데?
각종 적용 패턴 - 너 그렇게 짜는 것보다 이렇게 짜는게 더 좋을 것 같은데?
동기 - 시간, 돈
시간은 곧 돈이다. 시간을 많이 쓰는 개발자는 돈이 많이 들고 다 같이 망한다.
시간 - 너 왜 프레임워크 써서 짰어? 제가 바닥부터 만들면 지옥입니다. 이게 시간 아끼는 길이에요.
돈 - 너 왜 솔루션 만들랬더니 다른 데서 사왔어? 제가 만들면 그 돈보다 3배는 더 들어요. 이게 돈 아끼는 길이에요.
결론
남들이 날 공격하기 전 미리 방어막을 구축해놓자.