Sample

int-5d453bff9a93-I02

Shorten method, parameter, and local names without collisions

Matched original source

Lines64

Scores

MethodScoreScale
Posnett0.9980–1; higher is more readable
Scalabrino0.9280–1; higher is more readable
Dorn0.6940–1; higher is more readable
Mi0.2930–1; higher is more readable
LLOC9Logical lines; fewer is more readable
DeepSeek V4 Pro5.670–20; mean of three runs
GPT-6.1 Sol13.330–20; mean of three runs
BTTF0.570–1; higher is more readable

Views

Source code

package org.apache.kafka.streams.processor.internals; import org.apache.kafka.common.TopicPartition; import org.apache.kafka.streams.processor.TaskId; import java.util.Map; import java.util.Set; /** * See {@link StoreChangelogReader}. */ public interface ChangelogReader extends ChangelogRegister { /** * Restore all registered state stores by reading from their changelogs * * @return the total number of records restored in this call */ long res(final Map<TaskId, Task> tas); /** * Transit to restore active changelogs mode */ void enforce(); /** * Transit to update standby changelogs mode */ void transit(); /** * @return true if the reader is in restoring active changelog mode; * false if the reader is in updating standby changelog mode */ boolean is(); /** * @return the changelog partitions that have been completed restoring */ Set<TopicPartition> completed(); /** * @return the logical changelog partitions end-offsets */ Map<TopicPartition, Long> logical(); /** * Returns whether all changelog partitions were completely read. * * Since changelog partitions for standby tasks are never completely read, this method will always return * {@code false} if the changelog reader registered changelog partitions for standby tasks. * * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read, * {@code false} otherwise */ boolean all(); /** * Clear all partitions */ void cle(); /** * @return whether the changelog reader has just been cleared or is uninitialized */ boolean is2(); }

Loading feature diagnosis…

Source regions

Feature contributions

Feature contributions

FeatureValueContribution
(log-odds)
Source linesThe number of non-empty source lines.64+25.6
Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones.653.531−21.567
Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value.4.415−6.622

Intercept 8.87 + feature contributions = 6.281 (log-odds).
Score = sigmoid(6.281) = 0.998.

Score0.928

Feature contributions

FeatureValueContribution
(log-odds)
Identifier layout (horizontal)How rapidly the visual pattern of identifier characters changes from left to right. It measures spatial frequency, not the meaning of the names.122−1.502
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.121.985+1.164
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.54−0.876
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.034+0.608
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.63.837+0.482
Indentation frequencyHow rapidly indentation changes from line to line.35+0.473
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.1+0.398

Intercept 0.07 + feature contributions = 0.818 (log-odds).
Score = sigmoid(0.818) = 0.694.

Score0.293
Score9
Run 1

The code has reasonable documentation but suffers from severe readability issues due to cryptic method names (res, enforce, transit, is, cle, is2) that obscure intent. While the structure is flat and organized logically, the method names are non-descriptive and require reading comments to understand their purpose. The abbreviated 'res' method name is particularly problematic for a public interface. Action granularity and reading flow are adequate because each method is separated, but the lack of descriptive naming disrupts natural comprehension. The implementation appears compact, but this conciseness comes at the cost of clarity. Overall, this code would be difficult for team members unfamiliar with the codebase to understand without extensive context, making it only partially readable.

Run 2

The code structure is reasonable as an interface definition with clear method grouping and Javadoc comments. However, the method names are severely abbreviated and cryptic: 'res', 'enforce', 'transit', 'is', 'cle', 'is2', 'logical', 'all'. These names fail to convey intent — for example, 'res' likely means restore but is ambiguous, and 'is2' is completely opaque. This damages clarity of intent and reading flow, forcing the reader to rely on comments just to understand what each method does. The comments themselves are helpful, but they should not compensate for poor naming. Nesting is flat (good), and actions are granular (good), but the overall readability is heavily reduced by the naming choices. The code is concise but at the cost of being cryptic. A developer unfamiliar with this codebase would struggle to immediately grasp the purpose of each method.

Run 3

The code suffers from severely obfuscated method names like res(), enforce(), transit(), is(), completed(), logical(), all(), cle(), and is2(), which completely obscure intent despite the Javadoc comments. While the structure is organized as an interface with methods grouped logically and there is no nesting, the naming choices force readers to constantly refer back to documentation to understand what each method does. The reading flow is disrupted by these cryptic abbreviations and unclear verbs. Code length is concise, but this conciseness comes at the cost of clarity, making the code practically unreadable for anyone unfamiliar with the specific abbreviations used. Action granularity is appropriate with single-purpose methods, but this cannot compensate for the naming issues that dominate the readability assessment.

Run 1

Code Structure: The interface is logically organized, with imports followed by individually documented method declarations. Nesting: There is no deep nesting or complex control flow. Clarity of intent: Documentation explains most operations, but abbreviated or generic names such as res, tas, is, all, cle, and is2 obscure meaning and force readers to consult comments. Code length: The interface is concise; the longer documentation for all() usefully explains standby-task behavior. Action granularity: Each declaration occupies its own line and represents a single operation. Reading flow: Consistent formatting and adjacent documentation make scanning straightforward, although unclear method names and the lack of spacing between package and import sections reduce readability.

Run 2

Code Structure: The interface is logically organized, with documented method declarations and consistent spacing. Nesting: There is no nested logic, making it easy to scan. Clarity of intent: Javadoc explains most operations, but abbreviated or generic names such as res, tas, is, cle, and is2 obscure meaning and force readers to rely on documentation. Code length: The interface is concise; the longer comment for all usefully explains standby-task behavior. Action granularity: Each declaration occupies its own line, with no bundled actions. Reading flow: Formatting and adjacent documentation support a natural flow, although vague method names make distinguishing operations difficult. Overall, strong structural readability is undermined by poor naming.

Run 3

Code Structure: The interface is logically organized, with imports followed by documented method declarations. Nesting: There is no nested control flow, making the layout easy to scan. Clarity of intent: Javadoc explains most operations, but abbreviated or generic names such as res, tas, is, all, cle, and is2 obscure their meaning and force readers to rely on documentation. Code length: The interface is concise; the longer comment usefully explains standby-task behavior. Action granularity: Each method declaration occupies its own line, with no combined actions. Reading flow: Consistent formatting and adjacent documentation support natural reading, though missing spacing after the package declaration and unclear names reduce readability. Overall, the structure is clean, but the naming significantly weakens comprehension.