What got you here won't get you there

너 왜 코드 그렇게 짰어? 본문

Code

너 왜 코드 그렇게 짰어?

optimy 2021. 7. 5. 18:57

내가 왜 이렇게 프로그램을 짰는지 어떻게 설명할 수 있을까? 

켄트 벡의 구현 패턴

프로그램의 철학이나 방향성을 정립 - 합리주의와 상대주의

상대주의 - 한 프로그램을 특정하게 정의할 수 없다.

- 어떤 클래스는 다른 클래스의 부모 클래스임과 동시에 자식 클래스 일 수 있다.

- JVM 입장에서 OS는 플랫폼이지만, 자바 프로그램 입장에서 JVM은 플랫폼이다.

이를 특정하기 위한 모두가 동의할 수 있는 기준을 잡기 위해 합리주의가 동원된다.


가치 - 의사소통, 단순함, 유연함

너 왜 그렇게 짰어?

의사소통 - 이렇게 짜니까 팀원들이 잘 이해해서요. 의사소통을 잘 하려구요.

단순함 - 이전 구조가 복잡해서 유지보수가 힘들어서 단순한 구조로 바꿨어요.

유연함 - 나중에 여러 기능을 더 추가할 수 있도록 짰어요.

원칙 - 지역화, 중복제거, 대칭성

원칙은 항상 지켜져야 하는 것.

지역화 - 전역변수 쓰지말고 지역변수 써. 전체적으로 영향이 가지 않도록 해라. 지역화 할 수 있을만큼 지역화 해.

중복제거 - 야 여기 로직 중복됐는데? 하나로 만들어. 왜? 수정할 때 두 곳 모두 수정하기 힘들잖아.

대칭성 - 야 여기 setter는 있는데 getter가 없는데? 특별한 이유가 있는게 아니면 수정해.

패턴 - 개발론, 설계론, 각종 적용 패턴

경험에 의한 연역적 결과

개발론 - 선배들이 이렇게 개발해봤는데 좋던데?

설계론 - 선배들이 이렇게 설계해봤는데 좋던데?

각종 적용 패턴 - 너 그렇게 짜는 것보다 이렇게 짜는게 더 좋을 것 같은데?

동기 - 시간, 돈

시간은 곧 돈이다. 시간을 많이 쓰는 개발자는 돈이 많이 들고 다 같이 망한다.

시간 - 너 왜 프레임워크 써서 짰어? 제가 바닥부터 만들면 지옥입니다. 이게 시간 아끼는 길이에요.

돈 - 너 왜 솔루션 만들랬더니 다른 데서 사왔어? 제가 만들면 그 돈보다 3배는 더 들어요. 이게 돈 아끼는 길이에요.

 

결론

남들이 날 공격하기 전 미리 방어막을 구축해놓자.
Comments