Brown_Wolf's blog

By Brown_Wolf, history, 12 months ago, In English

I have seen in many people's code that they use a solve function instead of writing the logic in the main function. What advantages it has over writing the code directly in the main function?

  • Vote: I like it
  • +6
  • Vote: I do not like it

| Write comment?
»
12 months ago, # |
  Vote: I like it 0 Vote: I do not like it

The use of the function solve() does not affect the running time of the program. But it makes the code more readable.

»
12 months ago, # |
  Vote: I like it -66 Vote: I do not like it
»
12 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Allows for easier switching between single testcase and multiple testcase problems. For example:

void Main() {
    // your logic here...
}
int main() {
#ifdef MULTI
    int T;
    rd(T);
    while (T--)
#endif
        Main();
    return 0;
}
»
12 months ago, # |
  Vote: I like it +79 Vote: I do not like it

You can use return to easily and quickly exit the current testcase.

  • »
    »
    12 months ago, # ^ |
      Vote: I like it +5 Vote: I do not like it

    By far the best reason. Imagine having something like if specific case, then continue the loop. And now you have a bunch of such cases. Your code would be pretty ugly and filled with just exiting the loop.

»
12 months ago, # |
  Vote: I like it +8 Vote: I do not like it

You don't have to worry about using continue in the testcase loop when you're done printing the answer to stdout halfway to the code, you can just return after that.

»
12 months ago, # |
  Vote: I like it +8 Vote: I do not like it

One important characteristic of high-quality code is orthogonality. (I'm not telling you to make your code more vertical, but more clearly.) If you want to write orthogonal code, it is often more efficient to encapsulate statements within functions, making debugging more convenient as well.

Additionally, the best part is that the "return;" statement can directly jump to the next test case without the need for control variables or goto-like statements.

Moreover, some programmers try to have fewer statements within their main function to make the logic clearer, specifically for their own reading purposes.

»
12 months ago, # |
  Vote: I like it 0 Vote: I do not like it

for me , the reason I use solve() is because I can just return in the function whenever I want to and preceed to the next testcase , that makes it easy to exit a testcase , doing it in main would require multiple variables and ifs so it is just convenient