<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Code Conventions</title><link>https://sourceforge.net/p/sucrose/wiki/Code%2520Conventions/</link><description>Recent changes to Code Conventions</description><atom:link href="https://sourceforge.net/p/sucrose/wiki/Code%20Conventions/feed" rel="self"/><language>en</language><lastBuildDate>Sat, 04 Jul 2026 04:15:46 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/sucrose/wiki/Code%20Conventions/feed" rel="self" type="application/rss+xml"/><item><title>Code Conventions modified by Bayram Emekli</title><link>https://sourceforge.net/p/sucrose/wiki/Code%2520Conventions/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -28,7 +28,7 @@
 Rules:


 - The alias is the first letter of each namespace segment, uppercased.
-- **Collisions are disambiguated by appending more letters from the final segment.** For example, `SSDECT` is used for `Sucrose.Shared.Dependency.Enum.CompatibilityType`, distinguishing it from `Sucrose.Shared.Dependency.Enum.CommandType` (which would otherwise also acronym to `SSDEC`).
+- **Collisions are disambiguated by inserting an extra distinguishing letter from the colliding word.** A compound final segment contributes one letter per word (e.g. `CommandType` → `CT`, so `Sucrose.Shared.Dependency.Enum.CommandType` → `SSDECT`). Because `CommandType`, `CompatibilityType`, and `CommunicationType` all reduce to `SSDECT`, files that must import more than one of them add an interior letter from the differing word: `SSDECDT` (Comman**D**Type), `SSDECYT` (Compatibilit**Y**Type), `SSDECNT` (Communicatio**N**Type). In most files only one of these is imported, so the shared `SSDECT` alias is reused as-is.
 - `using` directives go **outside** the namespace.

 When you write new code, derive aliases the same way and reuse the existing alias for a namespace if the file already imports it elsewhere in the codebase.
@@ -60,7 +60,7 @@
 | XML files | indent **2 spaces** (`[*.xml] indent_size = 2`) |
 | Namespaces | **block-scoped** (`csharp_style_namespace_declarations = block_scoped`) |
 | Type/method/property/event naming | **PascalCase** |
-| Field naming | **camelCase** |
+| Field naming | **camelCase** (project convention; not enforced by `.editorconfig`) |
 | Interfaces | **prefixed `I`** (`dotnet_naming_style.begins_with_i.required_prefix = I`) |
 | `using` placement | **outside** the namespace (`csharp_using_directive_placement = outside_namespace`) |
 | Types | **explicit types, not `var`** (`csharp_style_var_* = false`) |
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bayram Emekli</dc:creator><pubDate>Sat, 04 Jul 2026 04:15:46 -0000</pubDate><guid>https://sourceforge.netdbd1ee03a6594a54a91b14611a39313c71de598b</guid></item><item><title>Code Conventions modified by Bayram Emekli</title><link>https://sourceforge.net/p/sucrose/wiki/Code%2520Conventions/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="h-code-conventions"&gt;Code Conventions&lt;/h1&gt;
&lt;p&gt;Sucrose enforces a tight, consistent code style across its many projects, and one convention in particular — the &lt;strong&gt;namespace-alias acronym rule&lt;/strong&gt; — is so pervasive that code which ignores it will look wrong immediately. This page documents that aliasing rule, the directory conventions inside shared projects, the &lt;code&gt;.editorconfig&lt;/code&gt; style rules (which are &lt;em&gt;build errors&lt;/em&gt;, not suggestions, because &lt;code&gt;EnforceCodeStyleInBuild=true&lt;/code&gt;), and the project-wide language settings. Follow these exactly when contributing.&lt;/p&gt;
&lt;h2 id="h-contents"&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#namespace-alias-convention-critical"&gt;Namespace alias convention (critical)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#directory-conventions"&gt;Directory conventions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#style-rules-editorconfig"&gt;Style rules (.editorconfig)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#project-wide-language-settings"&gt;Project-wide language settings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-settings-pattern"&gt;The settings pattern&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-file-header"&gt;Example file header&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#see-also"&gt;See also&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h-namespace-alias-convention-critical"&gt;Namespace alias convention (critical)&lt;/h2&gt;
&lt;p&gt;Every Sucrose (and Skylark) namespace import is aliased to a short uppercase &lt;strong&gt;acronym formed from the first letter of each namespace segment&lt;/strong&gt;. Never use fully-qualified names, and never use a bare &lt;code&gt;using&lt;/code&gt; for a Sucrose namespace. Real examples:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;SHC&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Skylark&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Helper&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Culture&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="c1"&gt;// S-H-C&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;SMMCG&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sucrose&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Memory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Manage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Constant&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;General&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="c1"&gt;// S-M-M-C-G&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;SMMI&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sucrose&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Manager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Manage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Internal&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="c1"&gt;// S-M-M-I&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;SMMRG&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sucrose&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Memory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Manage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Readonly&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;General&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="c1"&gt;// S-M-M-R-G&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;SSDECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sucrose&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Shared&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Dependency&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Enum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CompatibilityType&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;SSSHP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sucrose&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Shared&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Space&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Helper&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Processor&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;SPVPLP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sucrose&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Portal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Views&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Pages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LibraryPage&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The alias is the first letter of each namespace segment, uppercased.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collisions are disambiguated by appending more letters from the final segment.&lt;/strong&gt; For example, &lt;code&gt;SSDECT&lt;/code&gt; is used for &lt;code&gt;Sucrose.Shared.Dependency.Enum.CompatibilityType&lt;/code&gt;, distinguishing it from &lt;code&gt;Sucrose.Shared.Dependency.Enum.CommandType&lt;/code&gt; (which would otherwise also acronym to &lt;code&gt;SSDEC&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;using&lt;/code&gt; directives go &lt;strong&gt;outside&lt;/strong&gt; the namespace.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you write new code, derive aliases the same way and reuse the existing alias for a namespace if the file already imports it elsewhere in the codebase.&lt;/p&gt;
&lt;h2 id="h-directory-conventions"&gt;Directory conventions&lt;/h2&gt;
&lt;p&gt;Files inside shared projects are organized by role (see &lt;a href="./Shared-Item-Projects"&gt;Shared Item Projects&lt;/a&gt; for the full list of projects):&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Folder&lt;/th&gt;
&lt;th&gt;Contents&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Enum/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Enum types&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Helper/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Static helper/utility classes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Manage/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Configuration/state management&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Manage/Manager/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Settings-manager classes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Manage/Readonly/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read-only constants&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Struct/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Struct types&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Extension/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Extension methods&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Services/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Pipe/signal service classes (in &lt;code&gt;.Pipe&lt;/code&gt;, &lt;code&gt;.Signal&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Event/&lt;/code&gt;, &lt;code&gt;View/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Used in engine shared projects (XAML views and event handlers)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="h-style-rules-editorconfig"&gt;Style rules (.editorconfig)&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;EnforceCodeStyleInBuild=true&lt;/code&gt; is set in &lt;code&gt;Directory.Build.props&lt;/code&gt;, so &lt;strong&gt;&lt;code&gt;.editorconfig&lt;/code&gt; violations fail the build locally.&lt;/strong&gt; The key rules:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rule&lt;/th&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Indentation&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4 spaces&lt;/strong&gt; (&lt;code&gt;indent_style = space&lt;/code&gt;, &lt;code&gt;tab_width = 4&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Line endings&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;CRLF&lt;/strong&gt; (&lt;code&gt;end_of_line = crlf&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XML files&lt;/td&gt;
&lt;td&gt;indent &lt;strong&gt;2 spaces&lt;/strong&gt; (&lt;code&gt;[*.xml] indent_size = 2&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Namespaces&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;block-scoped&lt;/strong&gt; (&lt;code&gt;csharp_style_namespace_declarations = block_scoped&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Type/method/property/event naming&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PascalCase&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Field naming&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;camelCase&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interfaces&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;prefixed &lt;code&gt;I&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;dotnet_naming_style.begins_with_i.required_prefix = I&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;using&lt;/code&gt; placement&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;outside&lt;/strong&gt; the namespace (&lt;code&gt;csharp_using_directive_placement = outside_namespace&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Types&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;explicit types, not &lt;code&gt;var&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;csharp_style_var_* = false&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Expression-bodied members&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt; for accessors/properties/indexers/lambdas; &lt;strong&gt;No&lt;/strong&gt; for methods/constructors/operators/local functions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operator wrapping&lt;/td&gt;
&lt;td&gt;&lt;code&gt;operator_placement_when_wrapping = beginning_of_line&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Preferred patterns&lt;/td&gt;
&lt;td&gt;pattern matching, switch expressions, null propagation/coalescing, compound assignment, simplified interpolation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Suggested (not enforced)&lt;/td&gt;
&lt;td&gt;primary constructors, readonly structs, UTF-8 string literals (all &lt;code&gt;:suggestion&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Two notes about &lt;code&gt;.editorconfig&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It contains a full duplicate &lt;code&gt;[*.vb]&lt;/code&gt; naming block (Turkish-named rules). VB is not used in the app — it is legacy/IDE-generated and can be ignored.&lt;/li&gt;
&lt;li&gt;Because CI only compiles 7 Library projects (see &lt;a href="./Building-From-Source"&gt;Building From Source&lt;/a&gt;), CI will &lt;strong&gt;not&lt;/strong&gt; catch a style violation in an engine, the Portal, or a shared project — but your local build will, since enforcement is on.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h-project-wide-language-settings"&gt;Project-wide language settings&lt;/h2&gt;
&lt;p&gt;From &lt;code&gt;Directory.Build.props&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Nullable&lt;/code&gt; is disabled&lt;/strong&gt; project-wide.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;ImplicitUsings&lt;/code&gt; is enabled.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;LangVersion&lt;/code&gt; is &lt;code&gt;preview&lt;/code&gt;&lt;/strong&gt; (C# preview language features are available).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Optimize=false&lt;/code&gt; is set globally (even for Release).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CS8632&lt;/code&gt;, &lt;code&gt;WFO0003&lt;/code&gt;, &lt;code&gt;SYSLIB0014&lt;/code&gt; are suppressed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h-the-settings-pattern"&gt;The settings pattern&lt;/h2&gt;
&lt;p&gt;Settings are the most common thing contributors add, and they follow a strict pattern. Settings live in the &lt;code&gt;Sucrose.Manager&lt;/code&gt; class library (&lt;code&gt;src/Library/Sucrose.Manager/Manage/*.cs&lt;/code&gt;), grouped by area: &lt;code&gt;General&lt;/code&gt;, &lt;code&gt;System&lt;/code&gt;, &lt;code&gt;Personal&lt;/code&gt; (Private), &lt;code&gt;Library&lt;/code&gt;, &lt;code&gt;Portal&lt;/code&gt;, &lt;code&gt;Engine&lt;/code&gt;, &lt;code&gt;Backgroundog&lt;/code&gt;, &lt;code&gt;Aurora&lt;/code&gt;, &lt;code&gt;Cycling&lt;/code&gt;, &lt;code&gt;Donate&lt;/code&gt;, &lt;code&gt;Hook&lt;/code&gt;, &lt;code&gt;Update&lt;/code&gt;, &lt;code&gt;Warehouse&lt;/code&gt;, &lt;code&gt;Internal&lt;/code&gt;. Each setting is a static property that reads/writes through a SettingManager with a constant key and an inline default:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Culture&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SMMI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GeneralSettingManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetSetting&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SMMCG&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Culture&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SHC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CurrentUITwoLetterISOLanguageName&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;RunStartup&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SHS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Clamp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SMMI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GeneralSettingManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetSettingStable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SMMCG&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RunStartup&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;bool&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;TelemetryData&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SMMI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GeneralSettingManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetSetting&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SMMCG&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TelemetryData&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Setting &lt;strong&gt;keys&lt;/strong&gt; are constants in &lt;code&gt;Sucrose.Memory.Manage.Constant.*&lt;/code&gt; (aliased &lt;code&gt;SMMCG&lt;/code&gt;, etc.).&lt;/li&gt;
&lt;li&gt;The manager instance comes from &lt;code&gt;Sucrose.Manager.Manage.Internal&lt;/code&gt; (&lt;code&gt;SMMI&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;GetSettingStable&lt;/code&gt; plus &lt;code&gt;SHS.Clamp&lt;/code&gt; for bounded integers.&lt;/li&gt;
&lt;li&gt;Defaults are passed inline to &lt;code&gt;GetSetting&lt;/code&gt;/&lt;code&gt;GetSettingStable&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See the full recipe for adding a setting in &lt;a href="./Extending-Sucrose"&gt;Extending Sucrose&lt;/a&gt;, and how the JSON is persisted in &lt;a href="./Settings-Persistence"&gt;Settings Persistence&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="h-example-file-header"&gt;Example file header&lt;/h2&gt;
&lt;p&gt;A representative file header obeying the aliasing rule and &lt;code&gt;using&lt;/code&gt;-outside-namespace convention:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;SHC&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Skylark&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Helper&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Culture&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;SMMCG&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sucrose&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Memory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Manage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Constant&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;General&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;SMMI&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sucrose&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Manager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Manage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Internal&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;namespace&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;Sucrose.Manager.Manage&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;General&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Culture&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SMMI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GeneralSettingManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetSetting&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SMMCG&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Culture&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SHC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CurrentUITwoLetterISOLanguageName&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2 id="h-see-also"&gt;See also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="./Shared-Item-Projects"&gt;Shared Item Projects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Preprocessor-Symbols"&gt;Preprocessor Symbols&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Repository-Layout"&gt;Repository Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Building-From-Source"&gt;Building From Source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Extending-Sucrose"&gt;Extending Sucrose&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Settings-Persistence"&gt;Settings Persistence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Contributing"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bayram Emekli</dc:creator><pubDate>Sat, 04 Jul 2026 04:15:19 -0000</pubDate><guid>https://sourceforge.net8467dab1f12c1fe3e19262fdc927b282445aa7b5</guid></item></channel></rss>