반응형 IT/아키텍처6 결합도(Coupling)과 응집도(Cohesion) 오늘은 결합도와 응집도를 알아보겠습니다. 결합도와 응집도는 모듈 또는 객체의 독립성을 나타내는 두 가지 지표입니다. 1. 결합도는 모듈 또는 객체 간에 서로 의존관계(종속성이라 표현해도 좋을 듯합니다) 정도를 나타냅니다. 2. 응집도는 모듈 또는 객체 내부 코드 간의 관계를 나타냅니다. 결합도(Coupling) 결합도를 설명하기 가장 적절한 비유로 데이터베이스 설계를 들 수 있습니다. 데이터베이스의 테이블을 설계할 때 1:N 관계를 유지해야 하고 M:N 관계를 지양해야 하는 것처럼 결합도는 종속 관계를 단순하게 가져가는 것이 좋다는 것을 말합니다. 결합도가 높은 것은 변경이 어려운 코드이고, 낮은 코도는 변경이 쉬은 코드입니다. 키보드의 자판 하나가 고장 나도 키보는 전체를 바꿔야 한다면 실로 엄청난 손.. 2022. 7. 13. 객체 설계의 원칙(SOLID) 오늘은 객체 설계의 원칙에 대해 말해보겠습니다. 이번 글에서는 용어 중 클래스와 객체를 그냥 객체로 통일하겠습니다. 엄밀하게 말하면 클래스는 소스 코드를 나타내고 객체는 실제 메모리에 올라가 있는 실체를 말하지만, 객체로 통일하여 표기하고자 합니다. 객체 설계의 원칙은 디자인 패턴을 기반으로 나온 원칙입니다. 디자인 패턴을 이해하는 것은 고단한 일이지만, 그래도 개발자라면 패턴을 숙지하는 것이 좋은 코드를 작성하는데 도움이 됩니다. 물론 디자인 패턴도 무분별하게 적용하다 보면 소스 코드가 복잡해지는 양면성을 가지고 있습니다. 한 가지 원칙을 따르다 보면 다른 원칙이 훼손이 되는 그런 양면성을 가진 원칙이기 때문입니다. 그렇기 때문에 디자인 패턴을 이해하기 위해서는 전체적인 관점을 유지하는 것이 매우 중요.. 2022. 7. 4. Bad smells in code(마틴 파울러의 코드의 악취) 마틴 파울러의 책 'Refactoring'에 소개된 '코드의 악취(Bad smells in code)'에 대해 알아보겠습니다. '중복된(Duplicated) 코드'는 같은 소스 코드가 여기저기 쓰인 경우입니다. '너무 긴 메서드(Long method)'는 메서드의 소스가 너무 긴 경우입니다. 긴 메서드는 피해야 할 습관입니다. 메서드 소스가 길고 장황하다는 것은 메서드가 하나의 역할만 하지 않는다는 말입니다. 간단한 + 같은 수식을 메서드로 빼라는 말이 아니라 메서드가 하는 역할은 하나만 해야 하는 것을 말합니다. 트랜잭션을 처리하는 메서드의 경우 길게 작성되는 경우를 종종 보게 됩니다. 그렇게 작성된 메서드보다는 역할에 따라 명확하게 분리하여 트랜잭션 메서드에 엮는 것이 좋은 방법입니다. '거대한 클래.. 2022. 6. 24. 리팩터링(Refactoring) 오늘은 소프트웨어 리팩터링에 대해 얘기해 볼까 합니다. 리팩터링은 기존의 소스 코드를 개선시키는 과정을 말합니다. 의식의 흐름에 따른 코드(생각나는 대로 작성한 코드 또는 스파게티 코드)는 나중에 다시 보면 상당히 읽기가 어렵습니다. 그런 소스코드를 재작성하여 일목요연하고 중복을 제거하는 과정을 리팩터링으로 보시면 됩니다. 리펙터링(Refactoring)의 정의 코드의 기능은 유지하면서 클래스, 함수, 필드처럼 여러 프로그래밍 요소를 변경하여 더 나은 코드로 개선하는 과정 또는 그러한 기술을 말합니다. 리펙터링의 목적 가장 핵심적인 목표는 소프트웨어를 더 이해하기 쉽고, 수정하기 쉽게 만드는 작업입니다. 리팩터링은 디자인 패턴(Design Pattern)을 기반으로 탄생했습니다. 디자인 패턴은 객체 간의.. 2022. 6. 24. 네이밍 룰 - 메소드 [2편, 단어] 1편에 이에 2편입니다. 네이밍 룰 - 메소드 [1편, 기본편] 개발자가 코딩시 가장 난해하게 생각하는 네이밍 중에서 메소드(함수)에 대해 정리해 보았습니다. 메소드를 작성하기 전 주석을 먼저 작성해 해당 메소드가 무엇을 할지 정의하고 주석을 기반 guruit.tistory.com 이번 편은 단어에 대해 정리해보겠습니다. A By B B를 기준으로 A를 하겠다. 예) moveByCursor 동사원형 show : 보여주다. 제시하다 (메시지를 제시할 때) open : 열다. 닫혀 있는 것이 열릴 때. (창을 열 때) contains : 포함하다 includes : 포함시키다. allows : 허용하다 support : 지원하다 accept : 받아준다. preserves : 보존하다. reset : 정보를.. 2022. 5. 26. 네이밍 룰 - 메서드 [1편, 기본편] 개발자가 코딩 시 가장 난해하게 생각하는 네이밍 중에서 메서드(함수)에 대해 정리해 보았습니다. 메서드를 작성하기 전 주석을 먼저 작성해 해당 메서드가 무엇을 할지 정의하고 주석을 기반으로 네이밍 및 코딩을 해야 간결하고 읽기 쉬운 코드를 작성할 수 있습니다. 하지만 주석만으로는 부족하고 네이밍 단어 선택의 기준을 잡고 네이밍해야 일관성 있는 네이밍이 가능하여 가독성을 올릴 수 있습니다. 아래는 메서드 네이밍의 저만의 기준입니다. (파스칼 표기법, 카멜 표기법에 대해서는 언급하지 않습니다. 선택은 각 언어의 룰을 따르시거나 자신이 편한 쪽으로 선택하는 걸 추천드립니다) 동사를 사용해서 지어라 메서드는 행위를 나타내기 때문에 항상 동사로 시작하는 것이 좋습니다. 그리고 메서드는 어떤 일을 하는지를 나타내는.. 2022. 5. 26. 이전 1 다음 반응형