--- title: Don't add boolean arguments date: 2024-05-03 permalink: daily/2024/05/03/dont-add-boolean-arguments tags: - software-development - drupal - php cta: ~ snippet: | Don't add boolean arguments to your methods. --- A convention I like from the Laravel framework is to avoid adding boolean arguments to methods. For example, if I have this function: ```php public function getPosts() { ... } ``` If I wanted to only get published posts, one way would be to add a boolean argument: ```php public function getPosts(boolean $onlyPublished) { ... } ``` Then, I'd need to use that within the method body to add another condition (this is referred to as control coupling, where one method affects another). The non-boolean approach would be to create a separate method with its own distinct name. For example, `getPosts()` could be named `getAllPosts()` and there could be a separate `getPublishedPosts()` method for only getting published posts: ```php public function getAllPosts() { ... } public function getPublishedPosts() { ... } ``` Whilst we have two methods now instead of one, it's much clearer what each does and there aren't any random `true` or `false`s wherever the method is used.