법칙 - 프로그래밍 안티패턴
깨진 유리창 법칙
빌딩같은 건물에 수리되지 않은 깨진 유리창이 한 장이라도 있다면, 사람들은 빌딩 주인이 자기 건물에 관심이 없는줄 안다.
이렇게 되면 곧 다른 유리창도 깨진다. 그리고 건물 전체에 심각한 파손이 일어난다.
소프트웨어도 똑같은 현상이 일어난다. 소프트웨어에서 깨진 유리창 즉 나쁜 설계, 잘못된 의사결정, 나쁜코드를 방치하면
그것이 아무리 작은것이라도 소프트웨어 전체를 단기간에 부패시킨다.
나쁜코드는 사심을 끌어낸다. 깨진유리창이 조금이라도 있다면 나머지 코드도 엉망진창일테니 나도 적당히 대충작업하자라는 생각을 한다.
코드는 청결하게 유지한다 깨진유리창이 있음 발견즉시 복구시키자 수정할 충분한 시간이 없을때는 코드가 좋지 않다는 취지를
알기 쉬운 곳에 명시하자.
깨진 유리창 현상은 도덕성의 저하와 같은 습관적인 나태에 장기적으로 노출되고 이를 모방함으로써 악의 연쇄가 발생하고 있을 가능성을 시사한다.
엔트로피 증가의 법칙
엔트로피란 물리학 용어로 무질서한 정도를 나타낸다. 열역학 법칙에 따르면 모든 우즈의 엔트로피는 증가해 간단는 사실이 증명되어 있다.
코드는 무질서로 향한다 이건 자연스러운 경향이다. 그래서 유지보수하기 어려워진다.
코드 부패의 징후
- 경직됨
- 깨지기 쉬움
- 이식성 없음
- 다루기 어려움
- 복잡함
- 반복
- 불투명함
애자일로 부패를 허용하지 않는다
팀문화로 부패를 허용하지 않는다
80:10:10
프로그램에 만병통치약은 없다.
고수준의 툴이나 언어를 사용해 소프트웨어를 개발하면 사용자 요구사항의 80%는 단기간에 개발할수 있지만
나머지 20%중 10%는 노력이 들어가야 되는거고 10%는 완전히 실현 불가능하자.
프로그램의 문제영역은 너무 넓다.
툴 사용은 적재적소에
만병통치약보다 전문약
조슈아 나무의 법칙
이름이 없는 것은 보이지 않는다.
어떤사람이 자기가 오래 거주하던 마을의 도서관을 찾았다. 이사람이 식물도감을 보다가 조슈아 나무라는 이름에 나무가 있는지
처음 알았다. 사진과 설명이 있었는데 자긴 오래동안 마을에서 보지 못했다.그런데 집으로 돌아오는길 가는 곳곳마다 조슈아 나무가 있는것이아닌가
이름을 앎으로써 존재를 안다.
유비쿼터스 언어(공통의 언어나 개념)를 사용하자
바벨탑 신이 노해서 언어를 여러개 만듬 혼란을 가중시킴 그래서 유비쿼터스 언어가 필요함
세컨드 시스템 증후군
두번째 배포는 기능 과다
익숙해지면 다기능주의로
사용자 고려
- 사용자는 누구인가?
- 사용자는 무엇을 필요로 하는가?
- 사용자는 무엇이 필요하다고 생각하고 있는가?
- 사용자는 무엇을 바라고 있는가?
세컨드 시스템 이후에도 똑같은 경향으로 기능이 너무 많이 생길수도 있다 사용자는 기존기능이 정확하게 동작하는것을 원한다.
기능이 증가한 소프트웨어를 피처 크립이라고 부른다 파멸로 향하는 첫걸음이다.
수레바퀴의 재발명
이미 있는데도 만든다. 표준 라이브러리를 따르자.
수레바퀴를 재발명하는 패턴
- 수레바퀴를 모른다.
- 수레바퀴를 만들고 싶다
수레바퀴 이외의 것에 주력하자
만들고 싶어서 만드는것은 프로그래머의 욕심이다.
수레바퀴를 재발명해야 할때
- 비지니스 목적
- 학습목적
야크의 털깍기
야크는 털이 많은 소같은 동물인데 여름이 오기전에 털을깍을때 몸통에 도달할려면 상당히 많은 털을 깍아야 된다.
이것을 비유하면서 어떤문제에 해결할려고 봤더니 다른 문제가 계속나와 몸통에 도달하지 못하는 경우를 비유
문제는 줄줄이 사탕식으로 나온다.
빨리빨리 처낸다.