Assignments within subexpressions reduce code clarity

Metadata

ID: php-best-practices/subexpression-assignment

Language: PHP

Severity: Warning

Category: Code Style

CWE: 481

Description

This rule against assignments within subexpressions is designed to enhance code clarity. Assignments within subexpressions can make the code more difficult to read and understand, as it combines two different operations-assignment and comparison-into a single line. This can potentially lead to confusion and errors, particularly for less experienced developers or those unfamiliar with the codebase.

The importance of this rule lies in the promotion of clean, simple, and readable code. Clear and concise code is easier to maintain, debug, and is less prone to errors. It also aids in the onboarding of new team members who need to quickly understand and contribute to the codebase.

Avoiding this rule violation involves separating the assignment and comparison operations into distinct lines of code. Instead of performing the assignment within the subexpression, perform the assignment first, then use the assigned variable in the subexpression. This practice not only makes the code cleaner and easier to understand, but it also helps to prevent potential errors that could occur from misunderstanding the combined operations.

Non-Compliant Code Examples

<?php
if (($var = call()) && check())) { // Not compliant
}

if ($var = call()) { // Not compliant
}

Compliant Code Examples

<?php
$var = call();
if ($var && check())) {
}

$var = call();
if ($var) {
}
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Analysis