Question: I have a question regarding generalization. I know when it is needed to be done, but is it worth having an extra class for 1 field?

e.g.:

`StatisticsCustomer` has fields: `Customer customer` and `int projectCount`
`StatisticsCountry` has fields: `Country country` and `int projectCount`

What is best in this situation? Creating an extra class just for projectCount or keeping it twice in the two classes?

Answer: 
In our line of work we tend to look for technical reasons, but in my opinion the primary reason isn't technical. If you look at [GitHub Help](https://help.github.com/) or other GitHub tutorials, forking a repo is one of the major steps for how you "do" GitHub. 

When people are learning and evaluating GitHub, just about every tutorial out there is going to tell them to fork a repo as part of that learning process. Since the primary purpose of GitHub is to contribute, a lot of people working through the standard tutorials don't realize if you just want a read-only clone you don't have to do a fork first.
The entire point of Github is *"social coding"*. 

Personally, I fork repositories when:

* I want to make a change.
* I think the project is interesting and may want to use it in the future, but have no easier way of saving it for later on the device I'm currently using.
* I want to use some or all of the code in that repository as a starting point for my own project.

> 
> Now I've heard of people collecting stamps and seashells, but why would anybody want to collect repositories?
> 
> 
> 

**Why not?**

There's nothing (that I can think of) that can go wrong from forking repositories for personal pleasure. Honestly, I keep a folder of interesting projects that I see on Github and other places simply for inspirational purposes, and partly because I'm a geek. I understand that I don't have to fork the project to read the code, but I may actually want to edit that in the future. 

Now start forking.