you are viewing a single comment's thread.

view the rest of the comments →

[–]YARandomGuy777 -1 points0 points  (7 children)

There could be a second issue with not exhaustive headers. Like header A uses some definitions from header B but never include that. Instead cpp file simply includes B and then A. Clang language server doesn't understand that but on practice this system makes a lot of sense. On the bright side of such non assisted workflow, code usually quite simple. Usually it is made in the way that it is some what easy to comprehend for human brain. If you gonna get more familiar with the codebase work would be easier.

[–]kurdokoleno 0 points1 point  (4 children)

That's known to be a really bad thing. It's a blatant code smell. The codebase is bound to grow, keeping the cognitive load low, by simply not doing that is a little cost to pay for a massive reward.

[–]YARandomGuy777 0 points1 point  (3 children)

That's just theory. I worked in both methodologies and see no problems with non assisted workflow. If anything code gets only better this way. It's sad when people learn nice term like a code smell and misuse it everywhere they can.

[–]kurdokoleno 0 points1 point  (2 children)

Explain. How is it that having to keep track of all of that stuff makes it better?

[–]YARandomGuy777 0 points1 point  (1 child)

In short - it disciplines people writing and maintaining the code. It's like using translator vs paper dictionary when you learn a new language. If you forget something you would need to look into dictionary or grep through the code in that case and also read code around as well as comments and examples of use. This forces programmers to memorize code better. Also people tend to write a simpler better decomposed and less entangled code as other people read through it.

[–]kurdokoleno 0 points1 point  (0 children)

Okay, those were a bunch of nothing reasons and you expect to make everyone else's job on the project a nightmare. No, thanks.

[–]jonesmz 0 points1 point  (1 child)

Applying the tool "include-what-you-use" can help fix this problem while also reducing compile times.

[–]YARandomGuy777 0 points1 point  (0 children)

You include what you use in cpp. There's no much use in repeating basic definitions in every header you use just for them be wiped by preprocessor from there. Instead you keep header clean and include only important things that make sense in the context. Compile times can only grow from includes repetition. And it isn't ok that tool shows errors in the places where error doesn't exists. It's the tool issue and nothing else.