Sample
int-c8550674ef77-I08
Select one of ten high-readability unrelated code templates per class
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0.135 | 0–1; higher is more readable |
| Scalabrino | 0.57 | 0–1; higher is more readable |
| Dorn | 0.769 | 0–1; higher is more readable |
| Mi | 0.727 | 0–1; higher is more readable |
| LLOC | 12 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 18.33 | 0–20; mean of three runs |
| GPT-6.1 Sol | 19 | 0–20; mean of three runs |
| BTTF | 0.631 | 0–1; higher is more readable |
Views
Loading feature diagnosis…
Source regions
Feature contributions
Feature contributions
| Feature | Value | Contribution (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. | 840.254 | −27.728 |
| Source linesThe number of non-empty source lines. | 60 | +24 |
| 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.665 | −6.998 |
Intercept 8.87 + feature contributions = -1.856 (log-odds).
Score = sigmoid(-1.856) = 0.135.
| Score | 0.57 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 58 | −1.017 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 96.721 | +0.756 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 40 | +0.646 |
| 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. | 99.984 | −0.57 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.047 | +0.488 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 59.941 | +0.428 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
Intercept 0.07 + feature contributions = 1.2 (log-odds).
Score = sigmoid(1.2) = 0.769.
| Score | 0.727 |
|---|
| Score | 12 |
|---|
Run 1
This interface is highly readable and well-structured. The code organization is logical, with method declarations grouped into sections (adjacent nodes, incident edges, edge operations) and separated by whitespace. Nesting is minimal - only the class/interface declaration and method bodies are nested, making the code flat and easy to scan. Intent is crystal clear through descriptive method names and purposeful Javadoc comments that explain each method's behavior and edge cases. The code length is concise - no unnecessary boilerplate or redundant annotations. Action granularity is appropriate for an interface, with each method declaration on its own line. Reading flow is natural, moving from basic accessor methods to more complex edge operations in a progressive manner. The only minor deduction is for the slightly verbose Javadoc on some methods, but this actually enhances understanding rather than hindering readability. Overall, this is exceptionally clean, well-documented Java code.
Run 2
The code is highly readable. It defines a clear, well-structured interface with logically grouped methods for querying and modifying network connections. The class-level and method-level Javadoc comments effectively explain purpose and important semantics, especially for edge cases like self-loops and directed/undirected behaviors. Each method performs a single, well-defined action, and the method declarations are concise and not nested. Imports and package declaration are standard, and method ordering flows naturally from querying to mutation. The only minor deductions are for slightly terse method documentation on some mutating methods and the inherent complexity of the domain model, but overall this is exemplary code clarity.
Run 3
The code is highly readable due to its clear structure, minimal nesting, and concise methods with strong documentation. Each method has a distinct, focused purpose, and the use of Javadoc clearly communicates intent, especially for edge cases like self-loops. The interface is logically organized, grouping related methods like predecessors/successors and in/out edges, with no unnecessary complexity. While the code is fairly dense, it remains easy to scan, and the annotations add useful context without cluttering the logic.
Run 1
Code Structure: Methods are logically grouped into node queries, edge queries, and mutation operations. Nesting: No nested control flow; the interface is flat and easy to scan. Clarity of intent: Descriptive method names, generic types, annotations, and targeted documentation clearly communicate purpose and return behavior. The isSelfLoop parameter on addInEdge could use explicit documentation. Code length: Concise, with useful comments rather than unnecessary verbosity. Action granularity: Each declaration occupies its own line and represents a focused operation. Reading flow: Consistent formatting and progression from queries to mutations support natural reading, though a blank line after the package declaration would improve visual separation.
Run 2
Code Structure: Logically groups node queries, edge queries, removals, and additions within a focused interface. Nesting: Flat declarations with no nested control flow. Clarity of intent: Descriptive method names, generic types, and targeted documentation clearly convey responsibilities; self-loop behavior for addInEdge could be documented more explicitly. Code length: Concise, with useful comments and no unnecessary implementation detail. Action granularity: Each declaration occupies its own line and represents one operation. Reading flow: Consistent spacing and progression from queries to mutations make scanning natural, though a blank line after the package declaration would improve visual separation.
Run 3
Code Structure: The interface logically groups node queries, edge queries, removals, and additions. Nesting: Flat method declarations introduce no nested control flow. Clarity of intent: Descriptive method names, generic types, and focused documentation communicate purpose well; however, the initial query methods lack documentation, and addInEdge does not explain isSelfLoop. Code length: Concise declarations and relevant comments avoid unnecessary verbosity. Action granularity: Each declaration occupies its own line, with annotations clearly associated with methods. Reading flow: Consistent formatting and progression from queries to mutations make the interface easy to scan, though a blank line after the package declaration would improve visual separation.