DEV Community

Cover image for Code Smell 228 - Multiple Classes per File
Maxi Contieri
Maxi Contieri

Posted on • Originally published at maximilianocontieri.com

Code Smell 228 - Multiple Classes per File

More than one class is a mess

TL;DR: Follow the separation of concerns principle and file organization

Problems

  • Code Organization

  • Coupling

  • Autoloading problems

  • Debugging

  • Version control and merge conflicts

Solutions

  1. Declare a single class per file

  2. Use name scoping

Context

In languages that declare classes using a file system, having one class per file is generally considered a best practice.

This approach helps improve code organization and maintainability and reduces potential issues.

You can organize namespaces into separate directories within your project structure.

This way, you can maintain a logical and efficient codebase while avoiding the issues of declaring multiple classes in a single file.

Sample Code

Wrong

<?

namespace MyNamespace;

class Class1 {
    public function sayHello() {
        echo "Hello from Class1!\n";
    }
}

class Class2 {
    public function sayHello() {
        echo "Hello from Class2!\n";
    }
}
Enter fullscreen mode Exit fullscreen mode

Right

<?

namespace MyNamespace;

class Class1 {
    public function sayHello() {
        echo "Hello from Class1!\n";
    }
}
Enter fullscreen mode Exit fullscreen mode
<?