cover-img

Code Smell 60 - Global Classes

Classes are handy. We can call them and invoke them at any time. Is this good?

7 April, 2023

4

4

0

Classes are handy. We can call them and invoke them at any time. Is this good?

TL;DR: Don't use your classes as a global point of access.

Problems

  • Coupling
  • Classes are global unless we use Namespaces.
  • Name polluting
  • Static Methods
  • Static Constants
  • Singletons

Solutions

  1. Use namespaces, module qualifiers or similar
  2. Avoid namespace polluting, keep the Global names as short as possible.
  3. Class single Responsibility is to create instances.

Sample Code

Wrong

<?

final class StringUtilHelper {
static function reformatYYYYDDMMtoYYYYMMDD($date) {
}
}

class Singleton {

}

final class DatabaseAccessor extends Singleton {

}

Right

<?

namespace Date;

final class DateFormtter {

function reformatYYYYDDMMtoYYYYMMDD(Date $date) {
}
// function is not static since class single responsibility
// is to create instances and not be a library of utils

}

namespace OracleDatabase;

class DatabaseAccessor {
// Database is not a singleton and it is namespace scoped
}

Detection

We can use almost any linter or create dependency rules searching for bad class references.

Tags

  • Globals

Conclusion

We should restrict our classes to small domains and expose just facades to the outside. This greatly reduces coupling.

Relations

Code Smell 18 - Static Functions

Code Smell 17 - Global Functions

More Info

Singleton - The root of all evil

Coupling - The one and only software design problem

Credits

Photo by Alfons Morales on Unsplash


Write shy code — modules that don't reveal anything unnecessary to other modules and that don't rely on other modules' implementations.

Dave Thomas


Software Engineering Great Quotes


This article is part of the CodeSmell Series.

How to Find the Stinky Parts of your Code

4

4

0

Maxi Contieri

Buenos Aires, Argentina

🎓Learn something new every day.📆 💻CS software engineer 👷coding👨🏽‍🏫teaching ✍🏾writing 🎨Software Design 🏢SOLID 🌉TDD 👴Legacy 💩Code Smells

More Articles

Showwcase is a professional tech network with over 0 users from over 150 countries. We assist tech professionals in showcasing their unique skills through dedicated profiles and connect them with top global companies for career opportunities.

© Copyright 2024. Showcase Creators Inc. All rights reserved.