summaryrefslogtreecommitdiff
path: root/skills/google-style-guide/reference/code.md
diff options
context:
space:
mode:
Diffstat (limited to 'skills/google-style-guide/reference/code.md')
-rw-r--r--skills/google-style-guide/reference/code.md105
1 files changed, 105 insertions, 0 deletions
diff --git a/skills/google-style-guide/reference/code.md b/skills/google-style-guide/reference/code.md
new file mode 100644
index 0000000..cb5af34
--- /dev/null
+++ b/skills/google-style-guide/reference/code.md
@@ -0,0 +1,105 @@
+# Code and API documentation detail
+
+Detail for: code font usage, code samples, command-line syntax, placeholders,
+API reference comments, semantic tagging, HTML/Markdown formatting. Source:
+developers.google.com/style (Code in text, Code samples, Code syntax,
+Placeholders, API reference comments, Semantic tagging, HTML formatting,
+Markdown).
+
+## Code font (inline code)
+
+Put in code font (backticks in Markdown, `code` in HTML) anything the reader
+types or that is a code entity. Non-exhaustive list:
+
+| Item | Example |
+|---|---|
+| Attribute names and values | "the `imageURL` attribute" |
+| Class names / method names | "the `SnapshotDiskOperator` class includes the `generate_snapshot_name` method" |
+| Command output | "The output is similar to the following: ..." |
+| Command-line utility names | "the `gcloud` tool", "the `kubectl` tool" |
+| Data types | "Nested data is represented as a `STRUCT` type" |
+| Database elements | "the `julianday` and `dayofweek` values from the `datetime` and `timestamp` columns" |
+| Element names (HTML/XML) | "the `script` and `df-messenger` HTML elements" (no angle brackets) |
+| Enum / constant values | "the constant `city` has the value `"San Francisco"`" |
+| Environment variables | "Set the `CHROME_REMOTE_DESKTOP_DEFAULT_DESKTOP_SIZES` environment variable" |
+| Filenames, extensions, paths | "the `pg_hba.conf` file, in the `/etc/postgresql/13/main` directory" |
+| HTTP verbs / status codes / content types | "send a `POST` request", "the `500 Internal Server Error` status code" |
+| IP addresses, machine types, regions (when code-like) | "the `e2-highcpu-16` machine type in the `us-central1-a` region" |
+| Boolean values as literals | "If the update succeeds, returns `true`." |
+| Literal text the reader types into a field | "In the **Name** field, enter `my-instance-99`" |
+
+Do **not** use code font for: domain names (use example.com), product/service
+names, or URLs the reader follows in a browser (make them links with
+descriptive text instead).
+
+### Grammatical treatment of code elements
+
+- Never inflect code as English — no pluralizing, possessives, or verbing.
+ Include a noun after the code item and inflect that noun:
+ - "the value of the `ADDRESS` constant" (not "`ADDRESS`'s value")
+ - "send a `POST` request" (not "`POST` the data")
+ - "call the `close` method" (not "`Closeing` the file")
+- Follow code spelling/capitalization exactly.
+
+## Code samples (blocks)
+
+- Indent with spaces (two per level per Google style; follow the language's
+ style guide); wrap lines at ~80 chars.
+- Markdown: fenced code blocks with the language for syntax highlighting.
+ HTML: `<pre>`.
+- Introduce the sample with a sentence; end with a colon if the sample directly
+ follows, a period if material intervenes.
+- Show omissions with a language-appropriate comment ("... // Existing code").
+- Don't rely on code samples alone — explain what the code does when relevant.
+
+## Command-line syntax
+
+- Show the command plus its most common use case. Prefer click-to-copy simple
+ commands over exhaustive syntax.
+- Optional arguments: document the common options, not every flag. Keep
+ mutually exclusive options clear ("`-a` or `-b`, not both").
+- Placeholders (see below) for values the reader replaces.
+- When showing output, include only the relevant parts and introduce it
+ ("The output is similar to the following:").
+- Use "run the `gcloud` command", not "gcloud it".
+
+## Placeholders
+
+- Placeholders represent values the reader must replace. Give them descriptive
+ names: `PROJECT_ID`, `LOCATION`, `EMAIL_ADDRESS` — not `VALUE1`.
+- In inline text and code blocks, format per your project's convention (often
+ angle brackets `<PROJECT_ID>` in syntax docs, or italic/capitalized in code
+ samples — follow the house convention).
+- Explain each placeholder the first time it appears ("Replace `PROJECT_ID`
+ with your project's ID.").
+- Use placeholder names consistently within a document.
+
+## API reference comments
+
+- Document every public class, constant, method, parameter, and return value.
+- First line: a concise statement of purpose in present tense, imperative or
+ descriptive ("Creates a new task on the specified task list.").
+- Parameter descriptions: purpose and expected values; state behavior for
+ booleans and defaults explicitly ("If `true`, validates the certificate.").
+- Return value: what information is returned, not a restatement of the method.
+- Avoid redundancy with the signature; don't repeat the method name as the
+ whole description.
+- Deprecations: state the replacement and guidance for updating code.
+
+## Semantic tagging (HTML)
+
+- Use elements for their purpose: `em` = emphasis, `strong` = strong
+ importance, `cite` = titles of works, `kbd` = keyboard keys, `pre` =
+ preformatted, `b` = attention without importance (used for UI labels).
+- Use headings only for hierarchical structure, CSS for visual styling.
+- No tables or frames for layout.
+- See the HTML formatting rules: two-space indentation, lowercase elements and
+ attributes, no trailing spaces, 80-char lines (except URLs and meta lines).
+
+## Markdown vs HTML
+
+- Markdown is preferred for readability; switch to HTML (`code`, `kbd`, spans
+ for nonbreaking spaces, etc.) when you need effects Markdown can't express.
+- Follow the project's existing convention.
+- Don't use tabs for indentation (Markdown features expect spaces); no trailing
+ whitespace. \ No newline at end of file