[TIL] 2020. 06. 04. Pratical_Programmer_2_1

달밤·2020년 6월 4일
1

TIL

목록 보기
32/110
post-thumbnail

오늘 배운 것

실용주의 프로그래머 1/3

소프트웨어 엔트로피

  1. 깨진 창문이론은 깨진 창문을 방치하면 그 지역의 치안유지가 제대로 이루어지지 않고 흉악범죄가 더 많이 발생한다는 이론이다. 이는 반대로 깨진 창문만 없도록 해도 범죄율이 줄어든다는 것을 의미하기도 한다.
  2. 이 책의 저자들(?)은 그것이 소프트웨어 개발에도 적용된다고 생각한다. (나쁜 설계, 잘못된 결정, 혹은 형편없는 코드)를 고치지 않은 채 내버려두면 소프트웨어의 엔트로피, 즉 무질서함의 정도가 점점 늘어나게 된다. 이는 함께 개발하는 동료 개발자들에게도 영향을 미치게되고, 하나의 방치된 코드가 프로젝트 전체에 영향을 미치게 된다는 것이다.
  3. 이를 방지하기 위해서는 깨끗하고 효율적인 코드를 사용하도록하고, 불쾌한 코드를 주석처리하거나 코드가 방치되지 않도록 관리해주어야 한다.

직교성

  1. '직교성'은 기하학에서 빌려온 용어인데, 컴퓨팅에서 이 용어는 일종의 독립성(independence)을 의미한다. 하나가 바뀌어도 나머지에 어떤 영향도 주지 않으면 서로 직교한다고 부를 수 있다.
  2. 저자는 '관련 없는 것들 간에 서로 영향이 없도록 하라' 고 강조한다. 이러한 직교성은 생산성 향상과 유비 보수의 용이성에 기여한다.
  3. 직교적인 컴포넌트 하나가 M개의 일을 하고, 다른 하나가 N개의 일을 한다고 가정한다면, 이 두가지는 결합되었을 때 총 M*N개 만큼의 일을 하게 된다. 하지만 직교적이지 않은(중복되는) 컴포넌트의 경우에는 겹치지는 부분 때문에, 직교적이었을 때보다 생산성이 떨어질 수 밖에 없다.
  4. 또한 개발은 항상 유지보수와 함께 가는 것인데, 직교적이지 않는 개발을 하게 되면 하나가 다른 하나에 영향을 주게 되기 때문에(기능이 겹치기 때문에) 최악의 경우 하나의 기능을 손보려고 했을 때 전체 시스템을 건드려야할 수도 있을 정도로 유지 보수가 어렵게 된다.
  5. 개인적으로 이 부분은 Twittler 함수의 기능을 최소한으로 쪼개서 여러 개를 작성하면서 느꼈던 부분이기도 하다. 이렇게 했을 때 특정 기능을 고치려고 했을 때 그 부분만 고치기 쉬워지기도 하고, 함수를 재사용할 수도 있어서 생산성 부분에서도 도움이 되었던 기억이 있어서 공감이 많이 갔던 부분.

오늘 하루

  1. 집 근처에 괜찮은 카페 하나를 찾았다. 점심 먹고 가서 책 읽고 왔는데. 책 읽기도 괜찮고, 나중에 더 더워지면 노트북 들고가서 수업 들어도 좋을 것 같다. 그나저나 날씨가 너무나 여름이다. 덥다 이제...
profile
다 늦은 밤, 달밤의 개발일기

0개의 댓글