일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- SSO
- 오답노트
- 네트워크관리사
- 보안이슈
- 악성코드
- 클라우드
- 오늘의 오답노트
- security
- 네관사2급
- AWS
- Java
- 리눅스
- 네트워크
- 깃허브
- 러시아
- 개발자
- 프로토콜
- Cloud
- 제로 트러스트
- tcp
- db
- 기업간의 협업 중요성
- 트랜잭션
- 보안
- 스프링
- 스프링부트
- 리눅스 마스터
- CVE
- 리마2급2차
- Linux
Archives
- Today
- Total
일단 진행시켜
나쁜 리팩토링은 나쁘다. 리팩토링은 좋다. 본문
1. Good Refactoring vs Bad Refactoring
https://www.builder.io/blog/good-vs-bad-refactoring
[ 요약정리 ]
리팩토링은 중요하다. 그러나, 대부분 개발자들이 새로 리팩터링 된 코드에 대해 이해와 유지 관리를 더 어려워한다. 일반적으로 더 느리고 버그도 많았다.
그렇다고 리팩토링이 나쁜 것은 아니다. 건강한 코드베이스를 위해 중요하다. 리팩토링이 나쁜 것이 아니라, 나쁜 리팩토링이 나쁜 것이다.
1. 크게 바꾸는 코딩 스타일
- 가장 흔한 실수 중 하나는 개발자가 코딩 스타일을 완전히 바꾸는 것이다.(새로운 라이브러리 도입 등)
- 간결하고 읽기 쉬운 완전히 새로운 패러다임보다는, 보다 관용적인 메서드 등을 활용하여 코드 개선하는 것이 훨씬 더 좋다.
2. 불필요한 추상화, 지나친 통합
- 기존 코드를 이해하지 못한 채 수많은 새로운 추상화는 지양해야 한다.
- 그룹화해서 안 될 것들을 그룹화하는 등의 실수를 저지를 수 있다.
- 프로그래밍 논리를 작고, 재사용 가능한 메서드로 묶거나 분해하는 방향으로 리팩터링 하는 것이 훨씬 더 좋다.
- 또한, 모든 기능을 무리하게 하나로 묶는 것 또한 좋지 않은 방법이다.
- 때때로 다른 기능에 대해 다른 설정이 필요하기 때문에 우리는 필요한 유연성은 유지하면서 추상화의 강점을 가져가야 한다.
- 단순히 "깔끔한 코드"를 위해 유연성을 제거하는 것은 좋지 않은 방법이다.
3. 기존 코드 이해는 필수!!
- 기존 코드를 이해하지 못한 채 코드를 배우는 동안 진행하는 리팩토링은 수많은 문제를 야기한다.
- 버그를 만들거나 중요한 메커니즘을 제거하여 성능을 저하시키는 등의 다양한 문제가 발생할 가능성이 높다.
- 또한 비즈니스 맥락을 이해하는 것도 중요하다.
[결론]: 올바른 리팩토링 방법
1. 작은 것부터 점진적으로 리팩토링 해나가자
2. 코드베이스 일관성
3. 정확하고 완전한 이해
4. 라이브러리 추가 등 새로움을 추가할 때는 팀의 동의가 필요하다
5. 리팩토링 전에 테스트를 진행하면서 업데이트하는 것이 좋다. 이를 통해 기존 기능을 유지할 수 있다
*리팩토링 도구
> 린팅 도구(Prettier, Eslint ), 코드 리뷰, 테스트(Vitest, Storybook 등), 적절한 AI 활용
🤔 이에 대한 나의 생각
리팩토링이 중요하다는 것을 다시 한번 느꼈다. 또, 좋은 리팩토링과 나쁜 리팩토링은 한 끗 차이임을 깨달았다.
과도한 변경이 결국 나쁜 결과를 초래한다. 그만큼 기존 코드 이해는 필수인 것 같다.
적어도 프로그래밍 세계에서 무의미한 코드는 없으며, 선배들이 작성한 코드 한 줄 한 줄 정확히 이해하고 따르는 것이 중요하다는 생각이 든다.
'🗞️ 보안 동향 파악 및 나의 생각 정리' 카테고리의 다른 글
GN+: Nginx, Github로 이전➡️❗GitHub의 장점❗ (1) | 2024.09.09 |
---|---|
BOM, DevSecOps: 소프트웨어 공급망 보안의 중요성 (0) | 2024.09.05 |
CI와 CD는 왜 분리되어야 하는 가? (3) | 2024.09.03 |
Linux: SSH 및 Key-Based 인증 (0) | 2024.09.02 |
리눅스 xz 결함: 기술적 문제가 아닌 윤리적 문제 (0) | 2024.08.30 |