Review Checklist
Checklist version: 1.0.0, 2025-05-23.
General
Adhere to CCL Coding Conventions.
Use forward declarations where applicable.
Omit redundant namespace qualifiers, such as when using the
usingdirective or already inside a namespace.Avoid micro-optimizations or premature optimizations that increase code complexity.
Ensure state transitions are balanced. Examples: use
setActive(true/false), pairinitialize()withterminate(), matchstartup()withshutdown().
Types
Avoid mixing string types such as
MutableCStringandStringto reduce overhead.Beware of implicit text encoding conversions. For example, converting a
Stringto aMutableCStringcan downgrade Unicode to ASCII. See Converting between Unicode strings and C-Strings.Use
UrlDisplayStringorUrlFullStringto convert URLs to strings and preserve their representation. Vice versa, use methods such asUrl::fromDisplayString(). Do not break file system URLs apart usingUrl::getPath(). See String representations of an URL.Use predefined reference types whenever possible. Prefer
StringRefoverconst String&. Other reference types:CStringRef,StringID,UIDRef,UrlRef. See :ref:`String reference types`<string_reference_types>.Always use
XSTRINGorXSTRfor user-facing strings, even if the application is not localized.Double-check data types in public interfaces; see IUnknown interface reference.
Memory
Scripting
When extending scriptable classes, maintain parity between native and script code.
Use
DEFINE_METHOD_*macros for all methods ininvokeMethod().Think about object lifetime when combining native code (using reference counting) and script code (using garbage collection).
Application
Use human-readable title case for command categories and names, even for hidden commands. Command name and category should match the English display category and title. Example: File - Save As