[TIL] 2020. 06. 04. Pratical_Programmer_2_1
오늘 배운 것
실용주의 프로그래머 1/3
소프트웨어 엔트로피
- 깨진 창문이론은 깨진 창문을 방치하면 그 지역의 치안유지가 제대로 이루어지지 않고 흉악범죄가 더 많이 발생한다는 이론이다. 이는 반대로 깨진 창문만 없도록 해도 범죄율이 줄어든다는 것을 의미하기도 한다.
- 이 책의 저자들(?)은 그것이 소프트웨어 개발에도 적용된다고 생각한다. (나쁜 설계, 잘못된 결정, 혹은 형편없는 코드)를 고치지 않은 채 내버려두면 소프트웨어의 엔트로피, 즉 무질서함의 정도가 점점 늘어나게 된다. 이는 함께 개발하는 동료 개발자들에게도 영향을 미치게되고, 하나의 방치된 코드가 프로젝트 전체에 영향을 미치게 된다는 것이다.
- 이를 방지하기 위해서는 깨끗하고 효율적인 코드를 사용하도록하고, 불쾌한 코드를 주석처리하거나 코드가 방치되지 않도록 관리해주어야 한다.
직교성
- '직교성'은 기하학에서 빌려온 용어인데, 컴퓨팅에서 이 용어는 일종의 독립성(independence)을 의미한다. 하나가 바뀌어도 나머지에 어떤 영향도 주지 않으면 서로 직교한다고 부를 수 있다.
- 저자는 '관련 없는 것들 간에 서로 영향이 없도록 하라' 고 강조한다. 이러한 직교성은 생산성 향상과 유비 보수의 용이성에 기여한다.
- 직교적인 컴포넌트 하나가 M개의 일을 하고, 다른 하나가 N개의 일을 한다고 가정한다면, 이 두가지는 결합되었을 때 총 M*N개 만큼의 일을 하게 된다. 하지만 직교적이지 않은(중복되는) 컴포넌트의 경우에는 겹치지는 부분 때문에, 직교적이었을 때보다 생산성이 떨어질 수 밖에 없다.
- 또한 개발은 항상 유지보수와 함께 가는 것인데, 직교적이지 않는 개발을 하게 되면 하나가 다른 하나에 영향을 주게 되기 때문에(기능이 겹치기 때문에) 최악의 경우 하나의 기능을 손보려고 했을 때 전체 시스템을 건드려야할 수도 있을 정도로 유지 보수가 어렵게 된다.
- 개인적으로 이 부분은 Twittler 함수의 기능을 최소한으로 쪼개서 여러 개를 작성하면서 느꼈던 부분이기도 하다. 이렇게 했을 때 특정 기능을 고치려고 했을 때 그 부분만 고치기 쉬워지기도 하고, 함수를 재사용할 수도 있어서 생산성 부분에서도 도움이 되었던 기억이 있어서 공감이 많이 갔던 부분.
오늘 하루
- 집 근처에 괜찮은 카페 하나를 찾았다. 점심 먹고 가서 책 읽고 왔는데. 책 읽기도 괜찮고, 나중에 더 더워지면 노트북 들고가서 수업 들어도 좋을 것 같다. 그나저나 날씨가 너무나 여름이다. 덥다 이제...