Written by JS970
on
on
소프트웨어시스템설계 2023-03-13 수업정리
Flow
- UML
- Refactoring (1)
UML(Unified Modeling Language)
- UML basic elements
- UML은 특정 언어의 모델링만 하는 것이 아니므로, attribute, operation등 포괄적인 단어를 사용한다.
Refactoring
- 변수명, 메소드명, 클래스명이 requirement단계의 이름과 일치해야 한다.
- 응집성 문제가 없어야 한다.
- 하나의 메소드는 하나의 역할만을 해야 한다. 이렇지 않을 경우 응집성이 높아져 code smell이 발생한다.
- switch - case문의 사용은 응집성 문제를 가질 수밖에 없기 때문에 그 자체로 smell이 된다.
- 이러한 문제는 적절한 design pattern을 선택하여 해결 가능하다.
- 코드의 중복이 없어야 한다.
- 코드 자체의 중복은 리펙토링 과정에서 발생할 수 있다.(연산의 중복 등)
- 하지만 코드의 수정에 있어서 한 가지 목적을 위한 수정을 했을 때 여러 부분을 수정해야 하는 중복은 발생해서는 안된다. => extreme code smell
- 이는 적절한 extract method를 통해 해결할 수 있다.
- OCP(Open Close Principle)를 준수해야 한다.
- 확장(extension)에 대해서는 Open 되어 있어야 한다.
- 기존 코드의 수정(modification)에 대해서는 Close 되어 있어야 한다.
- 결과적으로 기존 코드의 수정 없이 기능의 확장이 가능하게 한다.
- 이런 면에서 switch - case문이 smell로 분류된다.
- 리펙토링 결과 메소드의 길이는 짧아지고, 클래스는 더 커지고, 많아지게 된다.
- 리펙토링을 통해 코드의 유지보수성을 늘일 수 있다.
- 처음 코드를 작성할 때 당장만을 생각하는 것이 아닌, 1년 후, 5년 후를 생각한다.
- 혼자서 작성하는 코드가 아닌 여러 명에서 협업하는 프로젝트의 경우, 새롭게 프로젝트에 참가하는 사람이 기존의 모든 것을 이해하는 데에는 많은 시간이 소요된다.
- 하지만 코드가 리펙토링 되어 있다면 모든 것을 완벽히 이해하지 않더라도 유지, 보수를 할 수 있다.