  God Header File refers to a header file with large code size and wide file
impact. Such files pose difficulties in code comprehension and slow down
compilation, ultimately increasing the maintenance cost during software
evolution. Although this concept is similar to God Class, existing refactoring
methods for God Classes are inappropriate for God Header Files. The reason lies
in the fact that the code elements in header files are mostly short declaration
types, and build dependencies of the entire system should be considered with
the aim of improving compilation efficiency. Meanwhile, these methods overlook
the concern of cyclic dependencies, which holds immense importance in the God
Header File decomposition. To address these challenges, this paper proposes a
God Header File decomposing approach based on multi-view graph clustering. It
first constructs a code element graph with multiple relationships. Then after
coarsening the graph, a novel multi-view graph clustering algorithm is applied
to identify clusters of closely related code elements, and a heuristic
algorithm is introduced to address the cyclic dependencies in the clustering
result. We evaluate our approach on a synthetic dataset as well as six
real-world God Header Files from different projects. The results show that our
approach could achieve 11.5% higher accuracy in comparison to existing God
Class refactoring methods. Moreover, our decomposition results attain better
modularity on all the real-world God Header Files and reduce recompilation time
for historical commits by 15% to 60%.
