clean code PHP 버전으로 만든 문서를 한글로 번역한 Git Readme 문서를 봤는데
간단한 코드 예제와 함께 클린 코드 규칙을 잘 설명해주어서 공유하게되었습니다.
Robert C. Martin의 책, 소프트웨어 엔지니어링의 교과서라고 불리는 Clean Code PHP 버전입니다.
이 문서는 스타일 가이드가 아닙니다.
PHP로 읽기 쉽고 재사용 가능하며, 리팩토링이 쉬운 소프트웨어를 만들어내기 위한 안내서입니다.
메모!
플래그를 함수의 매개변수로 사용하지 마세요
플래그를 사용하는 것은 함수가 한가지 이상의 일을 할 것이라 말하는 셈입니다.
함수는 한 가지 일을 해야 합니다.
만약 Boolean 값에 따라 서로 다른 코드를 사용해야 한다면 함수를 분리하세요.
조건문을 피하세요
"어떻게 if 문 없이 뭔가를 할 수 있죠?" 그에 대한 답은 다형성입니다. 클린코드 개념 때문입니다.
'함수는 한 가지만 해야 합니다.'
if 문을 가진 함수와 클래스를 가지게 될 때, 우리는 우리의 함수가 한가지 이상을 한다고 사람들에게 말하는 셈입니다.
불필요한 코드는 제거하세요
불필요한 코드는 중복된 코드만큼이나 나쁩니다. 코드에 남겨야 할 이유가 전혀 없습니다.
호출이 안되고 있다면 없애버리세요! 만약 여전히 필요하대도 버전 기록에 안전하게 남아있을 것입니다.
SOLID
SOLID 는 Robert Martin이 명명한 5가지 원칙의 앞 글자로 객체지향 프로그래밍과 디자인을 뜻하는 5가지 기본 원칙을 뜻합니다.
S: 단일 책임 원칙 (SRP)
한 클래스를 많은 기능을 꽉 채우는 것은 유혹적입니다.
클래스를 변경해야 할 필요가 있을 때 드는 시간을 최소화시키는 것은 중요합니다.
너무 많은 기능이 한 클래스에 있고 그중 한 부분을 수정해야 한다면 코드 안에 의존하고 있는 다른 모듈에 어떤 영향을 미치는지 파악하기 어렵기 때문입니다.
O: 개방/폐쇄 원칙 (OCP)
"소프트웨어 개체(클래스, 모듈, 함수 등)는 확장에 대해서는 개방되어야 하며, 변경에서는 폐쇄되어 있어야 합니다."
이 원칙은 기본적으로 사용자가 기존 코드를 변경하지 않고 새로운 기능을 추가할 수 있도록 허용해야 한다는 것을 뜻합니다.
L: 리스코브 치환 원칙 (LSP)
만약 우리가 부모 클래스와 자식 클래스를 가지고 있다면, 부정확한 결과를 얻지 않으면서 기본 클래스와 자식 클래스를 서로 교환하여 사용할 수 있다는 것입니다.
수학적으로 정사각형은 사각형입니다. 그러나, 상속을 통한 'is-a' 관계로 설계하면 빠르게 문제에 휘말리게 됩니다.
I: 인터페이스 분리 원칙 (ISP)
"클라이언트는 사용하지 않는 인터페이스에 의존하도록 강요되어서는 안 된다."
D: 의존성 역전 원칙 (DIP)
- 상위 레벨의 모듈은 하위 레벨의 모듈에 의존해서는 안 됩니다. 상위 레벨과 하위 레벨의 모듈 모두 추상화에 의존해야 합니다.
- 추상화된 것은 구체적인 것에 의존하면 안 됩니다. 구체적인 사항들은 추상화에 의존해야 합니다.
의존성 주입의 가장 큰 장점은 모듈 간의 결합을 줄일 수 있다는 것입니다. 결합은 아주 안 좋은 개발 패턴입니다. 그 이유는 우리의 코드를 리팩토링하기 어렵게 만들기 때문입니다.
'개발공부 > PHP' 카테고리의 다른 글
PHP call by reference (0) | 2024.03.02 |
---|---|
PHP 단점 - connection pool (0) | 2023.06.07 |
PHP 싱글톤 패턴 (0) | 2023.03.19 |
[PHP] redis 라이브러리 - Predis 알아보기 (0) | 2022.12.30 |
[PHP] mysql_num_rows VS mysql_affected_rows (0) | 2020.04.27 |
댓글