함수 매개변수의 부울 플래그는 코드를 읽고 유지하기 어렵게 만들 수 있습니다. 이를 피해야 하는 이유와 대신 할 수 있는 조치를 살펴보겠습니다.
부울 매개변수를 사용하면 함수가 두 가지 다른 작업을 수행하여 SRP(단일 책임 원칙)를 위반하는 경우가 많습니다. 전형적인 예는 다음과 같습니다.
function createFile(name, isTemp) { if (isTemp) { fs.create(`./temp/${name}`); } else { fs.create(name); } }
간단해 보이지만 몇 가지 문제가 있습니다.
createFile("log.txt", true); // What does 'true' mean here?
두 가지 기능이 하나로 통합: 부울은 스위치처럼 작동하여 기능이 서로 다른 작업을 수행하도록 합니다
테스트가 더 어려워짐: 기능이 작동할 수 있는 두 가지 방법을 모두 확인해야 합니다
기능 추가가 어려움: 나중에 세 번째 옵션이 필요한 경우 다른 부울을 추가하면 상황이 더욱 악화될 수 있습니다
기능을 두 개의 기능으로 나누어 각각 한 가지 작업을 수행합니다.
function createFile(name) { fs.create(name); } function createTempFile(name) { createFile(`./temp/${name}`); }
다음을 제공합니다.
이름 지우기: createTempFile("log.txt")가 수행하는 작업을 정확히 알려줍니다
간단한 논리: 각 함수는 한 가지 작업만 수행합니다
간편한 테스트: 기능당 하나만 테스트하면 됩니다
간단한 기능 추가: 새로운 것이 필요하십니까? 기존 기능을 변경하지 않고 새 기능 추가
이 아이디어는 다양한 상황에 적용됩니다. 다음은 몇 가지 사례입니다.
// ❌ Bad function authenticate(user, isAdmin) { if (isAdmin) { // Admin login logic } else { // Regular user login logic } } // ✅ Good function authenticateUser(user) { // Regular user login logic } function authenticateAdmin(user) { // Admin login logic }
// ❌ Bad function sendEmail(user, isHtmlFormat) { if (isHtmlFormat) { // Send HTML email } else { // Send plain text email } } // ✅ Good function sendPlainTextEmail(user) { // Send plain text email } function sendHtmlEmail(user) { // Send HTML email }
함수 매개변수의 불리언 플래그는 종종 함수가 너무 많은 일을 하려고 한다는 것을 보여줍니다. 별도의 집중된 기능을 만들면 다음과 같은 코드가 생성됩니다.
다음에 부울 매개변수를 추가하고 싶다면 대신 두 개의 함수를 만드는 것을 고려해 보세요.
코드에서 이와 같은 분할 기능을 사용해 보셨나요? 도움이 되었나요? 댓글로 알려주세요!
위 내용은 깨끗한 코드: 함수 매개변수의 부울 플래그가 코드 냄새인 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!