본문 바로가기

전체 글109

Code smell 1. Refactoring Risk 1) 이전에 없었던 오류가 새로 생길 수 있다. 2) 너무 자주 사용해서는 안된다. 3) 제품화되어 배포할 시스템에 대해서는 할지 말지 신중하게 결정 2. Refactoring 비용의 원인 1) 개발자의 손을 거치기 때문에 비용이 든다. 코드 자체. 2) Refactoring의 이전, 이후를 확인하기 위해 테스트 케이스를 만들어야 한다. 그리고 테스트 케이스도 또한 유지보수를 해야 한다. 3) 문서 유지보수 3. Refactoring 하지 말아야 할 경우 1) 코드가 깨졌을 때(코드에 오류가 있을 때) : 코드가 동작하지 않으면 오류 수정에 집중해야 하지 오류가 있는 코드를 Refactoring해서 구조를 향상시키는 것은 좋지 않다. 2) 마감이 다가올 때 3) Ref.. 2023. 5. 26.
Refactoring - Catalogue -Refactoring 목록 Collapse hierarchy Consolidate conditionals Decompose conditionals Extract class Inline class Extract method 1. Collapse hierarchy : 계층을 없애라 상속관계에 있고 따로 있는 두 클래스 Employee, Salesman -> Employee 하나로 merge 2. Consolidate conditionals : 같은 결과를 리턴하는 조건들이 여러개 있으면 하나로 합치고 함수로 뽑아내서 호출 아무런 배경정보가 없는 사람도 코드를 이해하도록 작성 3. Decompose conditionals : 조건이 복잡하면 분해, 혹은 함수로 묶어냄 날짜가 여름 시작하는 이전이거나 여름 끝.. 2023. 5. 25.
Refactoring - overview Refactoring - 원래 동작을 유지시키면서(behavior-preserving) 변형 : 중복을 제거, 복잡한 로직 단순화 불명확한 코드 명확화 효과 1) 새로운 코드를 추가하기 쉬워진다. 2) 이미 존재한 코드의 설계를 향상시킨다. 3) 코드에 대한 이해도가 더 높아진다. 배경 : Agile development 유행해서 점차 관심이 높아졌다. 원래 동작을 유지시키는지(behavior-preserving) 기준 : 단위 테스트하는 테스트 코드들을 미리 준비 해놓고 refactoring 이전 버전을 준비, refactoring 이후 버전을 준비하고 똑같은 테스트 코드를 준비했을 때 전부 통과하면 원래 동작을 유지시켰다 라고 한다. = refactoring 이전과 이후의 코드를 테스트해서 그 결과가.. 2023. 5. 24.
State Diagram의 구현 3) State Diagram 검은색 점 = 시작점 박스 = state 상태 화살표 = 상태의 변화 현재까지 넣은 금액(누적액)+추가로 넣은 코인의 값 2개의 화살표에 대해 inserted coin method .. 2023. 5. 23.
Sequence Diagram의 구현 2) Sequence diagram의 구현 CheckoutController클래스에 checkout메서드를 구현. dbm이 있어야 getDocument를 할 수 있다. alt = alternative 선택가능한 흐름 조건을 만족하면 점선 위의 부분이 실행, 만족하지 않으면 아래 부분이 실행. msg=checkout : checkout 메서드를 부른 다음 msg변수를 가져오라. -> return msg; 2023. 5. 20.
Coding - UML and Coding - Class diagram 작성된 설계 내용을 특정 프로그램 언어를 통해 어떻게 코딩으로 옮길 것인가 1. UML 설계를 구현하는 방법 1) Class diagram (Association) : 클래스 다이어그램에서 association들을 어떻게 코딩으로 옮길 것인가 2) Sequence diagram : 객체 행동에 대한 설계를 하는 시퀀스 다이어그램을 어떻게 코딩으로 옮길 것인가 3) State diagram : 스테이트 다이어그램을 어떻게 코딩으로 옮길 것인가 1) Class diagram 구현 protected : 상속관계가 있는 클래스들끼리만 공유함 일대일 대응, 직관적이다. 밑줄이 그어져 있는 것은 static 속성을 부여하라는 의미이다. : 클래스에 속하는 전체속성 dynamic : 객체 각각의 개별속성 a) 상속관.. 2023. 5. 19.