3 Commits

Author SHA1 Message Date
59999115b1 Merge branch 'main' into style/constructor-naming-params
Some checks failed
check / check (push) Failing after 7s
2026-03-18 04:00:44 +01:00
user
f05fdf6674 style: Params struct required even for single arguments
Some checks failed
check / check (push) Failing after 6s
Only exception: stupidly obvious single args (featureflag.New(true)).
When in doubt, use Params.
2026-03-17 19:57:28 -07:00
user
2b674c7d22 style: strengthen constructor naming and Params struct rules
Some checks failed
check / check (push) Failing after 7s
- Constructors must be New(), From<Something>(), or NewThing() (multi-type pkg)
- Strongly discourage creative names (Create, Make, Build, Init)
- Constructors must use Params struct for 2+ arguments, no exceptions
- Single obvious argument (ctx, bytes) is the only exception
2026-03-17 19:53:45 -07:00

View File

@@ -138,13 +138,13 @@ last_modified: 2026-02-22
1. Constructors **must** be called `New()`. `modulename.New()` works great if 1. Constructors **must** be called `New()`. `modulename.New()` works great if
you name the packages properly. If the constructor creates an instance from you name the packages properly. If the constructor creates an instance from
an existing value or representation, `From<Something>()` (e.g. an existing value or representation, `From<Something>()` (e.g. `FromBytes()`,
`FromBytes()`, `FromConfig()`) is also acceptable. If the package contains `FromConfig()`) is also acceptable. If the package contains multiple types
multiple types and `New()` is ambiguous, `NewThing()` is occasionally and `New()` is ambiguous, `NewThing()` is occasionally acceptable — but
acceptable — but prefer restructuring packages so each type gets its own prefer restructuring packages so each type gets its own package and a plain
package and a plain `New()`. Do not invent creative constructor names like `New()`. Do not invent creative constructor names like `Create()`, `Make()`,
`Create()`, `Make()`, `Build()`, `Open()` (unless wrapping an OS resource), `Build()`, `Open()` (unless wrapping an OS resource), or `Init()`. If you
or `Init()`. If you see a constructor with a non-standard name, rename it. see a constructor with a non-standard name, rename it.
1. Don't make packages too big. Break them up. 1. Don't make packages too big. Break them up.