Style Guide

We use the GTK style by default.

Random Style hints

  • Declare variables at the top of the scope, in order they’re used.

  • Always use g_autofree and g_autoptr where possible. Do one per line, and make sure it’s initialized to NULL.

  • Include the minimum number of header files, and list them in alphabetical order

FIXME messages

If you’re going to leave a FIXME in the code, please put the domain in parens. That make it easy to grep for all common areas that may need fixing. As an example:

/* FIXME(css): This color is hardcoded and should be loaded from the .css file */C

We don’t use TODO or have a TODO.md file. Please file bugs for all other issues.

Common FIXME domain reminders:

  • error: an unhandled error, that probably needs a better message to the user than a g_warning.

  • refactor: clean up an egregiously messy area of code

  • optimization: a chunk of code is unnecessarily slow/big

  • css: Something that should be moved to be a CSS setting

  • gtk/adwaita/libfoo: Work around for an issue in a dependency. Often includes the version number it was fixed or introduced.

  • magichars: A hardcoded constant in the code, that should be centralized or made configurable

  • mystery: Something we don’t understand in the code and couldn’t figure out.

Glossary

  • puzzle_id: Identifier of puzzles in resources. This starts at 1 instead of 0