From 8ff779ca2570bfce8adc2f1a0da08e7da7c74da9 Mon Sep 17 00:00:00 2001 From: tokyo4j Date: Fri, 23 May 2025 14:11:57 +0900 Subject: [PATCH] CONTRIBUTING.md: document use of braces in switch statements --- CONTRIBUTING.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5f7aa231..0180099d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -324,6 +324,32 @@ We use the prefix `handle_` for signal-handler-functions in order to be consistent with sway and rootston. For example `view->request_resize.notify = handle_request_resize` +### Switch statements with variable declarations + +Unlike many modern languages, C doesn't create a new scope after `case FOO:`. +Therefore, we wrap codes following `case FOO:` that include variable +declarations with braces (`{..}`) to reduce variable scopes. For example: + +``` +switch (x) { +case FOO: { + int y = 1; + break; +} +case BAR: { + do_something(); + int z = 1; + break; +} +case BAZ: + do_something(); + break; +} +``` + +But please also consider refactoring the code into a separate function if it +becomes lengthy. + # Commit Messages The log messages that explain changes are just as important as the changes