函数参数中的布尔标志可能会使代码更难以阅读和维护。让我们看看为什么应该避免它们以及可以做什么。
使用布尔参数通常意味着您的函数会执行两件不同的事情,从而违反了单一职责原则 (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中文网其他相关文章!