Today's English Expression 8/30 · Category: PR Description. All example sentences were created for this article. They are not taken from actual repository PRs, and the file and function names are examples.
Table of Contents
- At a Glance
- 1. Meaning and Nuance
- 2. Example Sentences
- 3. Similar Expressions and Differences
- 4. Common Mistakes Made by Koreans
- 5. One-Line Practice
- Model Answer
- References
At a Glance
| Expression | No functional change (intended). / NFC |
| Meaning | No change in functionality (as intended). |
| When to Use | Refactoring and cleanup PR descriptions, first line of commit messages |
| Politeness | N/A. It is a tag stating a fact |
1. Meaning and Nuance
Here, functional means "related to functions or behavior." No functional change means "the shape of the code has changed, but what the program does remains the same." PRs that rename functions, split files, combine duplicate code, or clean up comments and formatting fall under this category.
The LLVM Lexicon explains NFC as an abbreviation for No functional change and states that it is appended to the first line of a commit message to indicate that the commit is a pure refactoring or cleanup. The LLVM Developer Policy also states that commits changing only formatting or whitespace should clarify that they do not change functionality, and explains that NFC is commonly written. Many people in other projects also recognize this abbreviation, but in an unfamiliar repository, it is safer to spell it out.
The signal this expression sends to the reviewer is clear: "You do not need to look for behavioral differences. You only need to look at the form." This reduces the review burden, even for refactorings spanning hundreds of lines. Conversely, if you write NFC and the behavior actually changes, you lose a great deal of trust. Therefore, when you are not certain, you append intendedand write No functional change intended. This means, "That was the intention, but please let me know if anything happens to be different."
2. Example Sentences
Scenario 1: Refactoring PR Description
Move the snapshot helpers from
controller.gointosnapshot.go. No functional change.
Scenario 2: Separating Behavioral Changes and Cleanups
This PR has two commits. The first one is a pure refactor (no functional change). The second one changes the default timeout from 30s to 60s.
The reviewer can quickly skim past the first commit and focus on the second commit. It is a good practice not to mix behavioral changes and cleanups into a single commit.
Scenario 3: Review Reply
Good question. The only difference is the variable name, so this should be a no-op. No functional change intended.
no-op is short for no operation, a developer term meaning "a change with no effect."
3. Similar Expressions and Differences
- No behavior change. Almost identical in meaning. Used when emphasizing behavior from the user's perspective.
- Pure refactor / Cleanup only. States what was done. No functional change states the result. Using both together is the clearest.
- No user-facing change. Means internal behavior may have changed, but there is no visible change to the user. Because the scope is different, do not use them interchangeably. The Kubernetes PR template has a separate field asking, Does this PR introduce a user-facing change?
4. Common Mistakes Made by Koreans
- There is no function change. function is read as the noun "function," which can be misunderstood as "the functions did not change."
- Corrected sentence: No functional change.
- This PR doesn't change anything. A PR that changes nothing is unnecessary. You must state precisely what remains unchanged.
- Corrected sentence: This PR doesn't change any behavior; it only renames the helpers.
- NFC Using it alone for the first time in an unfamiliar repository. Some reviewers may not know the abbreviation.
- Corrected sentence: Refactor only, no functional change.
5. One-Line Practice
Translate the following Korean sentence into a PR description.
Moved test helpers to a separate package. Ensured that functionality does not change.
Model Answer
Move the test helpers into a separate package. No functional change intended.
The first sentence of a PR description is often written in the imperative mood (Move, Add, Fix). Since "Ensured that functionality does not change" expresses intent, intended is attached.
Titi's Word: Letting reviewers know what they can skip reading is also a form of kindness.
References
- LLVM Lexicon, "NFC": https://llvm.org/docs/Lexicon.html
- LLVM Developer Policy (Commit Messages): https://llvm.org/docs/DeveloperPolicy.html
- Kubernetes PR Template: https://github.com/kubernetes/kubernetes/blob/master/.github/PULL_REQUEST_TEMPLATE.md