I have a large class `Foo`1:

```
class Foo {
public:
    void apples1();
    void apples2();
    void apples3();

    void oranges1();
    void oranges2();
    void oranges3();
}

```

Splitting the class is not an option2, but the `foo.cpp` file has grown rather large. Are there any major design flaws to keeping the definition of the class in `foo.h` and splitting the implementation of the functions into `foo_apples.cpp` and `foo_oranges.cpp`.

The goal here is purely readability and organization for myself and other developers working on the system that includes this class.

---

1"Large" means some 4000 lines, not machine-generated.  

2Why? Well, `apples` and `oranges` are actually categories of algorithms that operate on graphs but use each other quite extensively. They can be separated but due to the research nature of the work, I'm constantly rewiring the way each algorithm works which I found for me does not (in the early stage) jive well with the classic OOP principles.