Sample

int-f71d699f43dd-I02

Shorten method, parameter, and local names without collisions

Matched original source

Lines75

Scores

MethodScoreScale
Posnett00–1; higher is more readable
Scalabrino0.7930–1; higher is more readable
Dorn0.7480–1; higher is more readable
Mi0.5630–1; higher is more readable
LLOC18Logical lines; fewer is more readable
DeepSeek V4 Pro6.330–20; mean of three runs
GPT-6.1 Sol12.670–20; mean of three runs
BTTF0.5910–1; higher is more readable

Views

Source code

package org.apache.kafka.common.requests; import org.apache.kafka.common.TopicPartition; import org.apache.kafka.common.message.VoteRequestData; import org.apache.kafka.common.message.VoteResponseData; import org.apache.kafka.common.protocol.ApiKeys; import org.apache.kafka.common.protocol.Errors; import org.apache.kafka.common.protocol.Readable; import java.util.List; public class VoteRequest extends AbstractRequest { public static class Builder extends AbstractRequest.Builder<VoteRequest> { private final VoteRequestData data; public Builder(VoteRequestData dat) { super(ApiKeys.VOTE); this.data = dat; } @Override public VoteRequest bui(short ver) { return new VoteRequest(data, ver); } @Override public String to() { return data.toString(); } } private final VoteRequestData data; private VoteRequest(VoteRequestData dat2, short ver2) { super(ApiKeys.VOTE, ver2); this.data = dat2; } @Override public VoteRequestData dat() { return data; } @Override public AbstractResponse get(int throttle, Throwable e) { return new VoteResponse(new VoteResponseData() .setErrorCode(Errors.forException(e).code())); } public static VoteRequest par(Readable rea, short ver3) { return new VoteRequest(new VoteRequestData(rea, ver3), ver3); } public static VoteRequestData singleton(TopicPartition topic2, String cluster, int replica, int replica2, int last, long last2, boolean pre) { return new VoteRequestData() .setClusterId(cluster) .setTopics(List.of( new VoteRequestData.TopicData() .setTopicName(topic2.topic()) .setPartitions(List.of( new VoteRequestData.PartitionData() .setPartitionIndex(topic2.partition()) .setReplicaEpoch(replica) .setReplicaId(replica2) .setLastOffsetEpoch(last) .setLastOffset(last2) .setPreVote(pre)) ))); } }

Loading feature diagnosis…

Source regions

Feature contributions

Feature contributions

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

Intercept 8.87 + feature contributions = -51.454 (log-odds).
Score = sigmoid(-51.454) = 0.

Score0.793

Feature contributions

FeatureValueContribution
(log-odds)
Indentation frequencyHow rapidly indentation changes from line to line.75+1.857
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.76−1.655
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.0−0.804
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.74.911+0.637
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.1+0.398
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.77.974+0.363
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.074+0.221

Intercept 0.07 + feature contributions = 1.086 (log-odds).
Score = sigmoid(1.086) = 0.748.

Score0.563
Score18
Run 1

The code has serious readability problems due to poor naming and inconsistent structure. Method names like 'bui', 'to', 'dat', 'par', and 'get' obscure intent, making the code ambiguous and requiring mental mapping. Parameter names like 'dat', 'ver', 'dat2', 'ver2', 'rea', 'ver3', 'topic2', 'replica', 'replica2', 'last', 'last2', and 'pre' lack meaningful context. The singleton method performs multiple nested actions in a single expression, creating vertical sprawl and making the reading flow disorganized. While the class structure is logical and follows basic request patterns, the terse abbreviations significantly reduce clarity. Nesting in singleton is deep but manageable; the primary issue is semantic noise from poor naming combined with action granularity that compresses complex object construction into one dense chain.

Run 2

The code has significant readability problems. It uses extremely abbreviated and cryptic method/variable names (bui, dat, par, rea, ver, to, dat2) that obscure intent. The Builder class has a misleading method `to()` and an oddly named `bui()` override. The `singleton()` method is deeply nested and mixes multiple setter calls per line, violating action granularity. It is also unnecessarily long for its purpose. The overall structure follows standard patterns, but the naming and nesting make it hard to follow. The reading flow is disjointed due to inconsistent and truncated identifiers. A score of 7 reflects partial structure but poor clarity and naming.

Run 3

This code is highly unreadable due to severe abbreviation of method names that obscure intent (e.g., 'bui', 'to', 'dat', 'par', 'rea', 'ver2'). Variable names are equally cryptic ('dat', 'ver', 'topic2', 'replica2', 'last', 'last2'). The structure is tangled and inconsistent—some methods are full words ('singleton', 'get'), but most are cryptic. Nesting in 'singleton' is deep and hard to follow, combining multiple data constructions in one dense expression. Reading flow is unnatural; the class jumps between builder, private constructor, and static factories without clear grouping. The purpose of each method is ambiguous since names do not communicate behavior. While the code is concise per line, excessive abbreviation makes it longer to comprehend. One positive is that chained method calls do separate actions, but the unconventional names negate that benefit.

Run 1

Code Structure: The request class is logically organized, with a nested builder and separate construction, access, response, and parsing methods. Nesting: Most methods are flat, but singleton contains a moderately nested fluent construction that requires tracking parentheses. Clarity of intent: Types and setter names communicate purpose, but abbreviated methods such as bui, to, dat, get, and par, plus numbered parameters such as replica2 and last2, obscure meaning. Code length: The implementation is concise, with little unnecessary code. Action granularity: Most statements and chained operations occupy separate lines, making individual actions easy to identify. Reading flow: Method boundaries support a natural progression, but inconsistent indentation, compressed imports, and awkward closing parentheses interrupt scanning.

Run 2

Code Structure: The request class is logically organized into a builder, constructor, accessors, response handling, parsing, and a factory method. Nesting: Most methods are flat, but singleton contains a deeply nested construction chain. Clarity of intent: Names such as bui, to, dat, get, par, replica2, and last2 obscure method purposes and parameter meanings; descriptive setter names partially compensate. Code length: The implementation is concise with little unnecessary code. Action granularity: Most statements perform one action, and chained setters generally appear on separate lines, although nested object creation combines several operations. Reading flow: The overall progression is sensible, but inconsistent indentation, ambiguous names, and clustered closing parentheses interrupt readability.

Run 3

Code Structure: Logically organized into a builder, constructor, accessor, response handling, parser, and factory method. Nesting: Most methods are flat, but singleton contains a deeply nested construction chain that requires careful tracking. Clarity of intent: Types and setter names communicate purpose, while abbreviated methods such as bui, to, dat, get, and par and parameters such as replica2 and last2 obscure meaning. Code length: Concise, with little unnecessary code. Action granularity: Most lines perform one clear operation; chained setters are individually separated, though nested constructors combine several actions within one expression. Reading flow: The class follows a natural progression, but inconsistent indentation, numbered parameter names, and clustered closing parentheses interrupt readability.