TT Lab
Blog

한국어 English 日本語

Get started
Blog

Blog

No functional change: Reassuring the reviewer that functionality remains the same

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

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.go into snapshot.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

4. Common Mistakes Made by Koreans

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

Sign in to like

Comments

No comments yet.

Sign in to leave a comment