While taking a session with a set of mobile developers, one of them asked a question that made many of them curious.

**Why multiple classes when single class can do?**

- The main reasoning for single class was that one would be able to save some lines of code.
- Also, one would be required to create just one object for multiple functionalities.

Lets look at some of the key advantages of multiple classes, each one of them having single functionality.

- High in cohesion, and hence reduced coupling. This tends to make the class reusable.
- Lesser costly to change than single class. Following explains the cost structure related with a change:

Let’s say a class is performing multiple different functions. Mathematically, the class can be represented as following:

Class A = f(x) + f(y) + f(z)

Let’s say, one needs to fix a bug related with f(x). Thus, one fixed the code in the class A that performed f(x). The code was, then, shipped to QA engineers. QA engineers used to spend, let’s say, 1hour for each function. Thus, for a change in one function he spent 3 hours.

**The total cost of change is 3 X (let’s say $20/hour**** as rate for QA engineer****)**** =**** $60**.

- On the other hand, if there were three different classes for three different functions,
**the cost of change would have been just****$15**. (Think How?)

Thus, it makes much more sense to split functionality into different classes as the change will be** less costlier** than following the approach of having multiple functionality in one class. The design leading to this approach (multiple class) could also be termed as** “Cost-effective”** design.

- Mean Squared Error or R-Squared – Which one to use? - September 30, 2020
- Linear Regression Explained with Python Examples - September 30, 2020
- Correlation Concepts, Matrix & Heatmap using Seaborn - September 29, 2020