Skip to content

style: idiomatic cleanups in ShortNumberInfo - #412

Merged
twcclegg merged 1 commit into
mainfrom
style/short-number-info
Aug 26, 2026
Merged

style: idiomatic cleanups in ShortNumberInfo#412
twcclegg merged 1 commit into
mainfrom
style/short-number-info

Conversation

@twcclegg

Copy link
Copy Markdown
Owner

Summary

Small readability pass over csharp/PhoneNumbers/ShortNumberInfo.cs, in the same spirit as #409. No behavior change, no restructuring — method-level structure stays a recognizable parallel to the Java source.

  • Expression-bodied the four single-statement methods (GetInstance, RegionDialingFromMatchesNumber, ConnectsToEmergencyNumber, IsEmergencyNumber).
  • == null / != nullis null / is not null throughout.
  • Dropped a redundant else following an unconditional return in GetRegionCodeForShortNumberFromRegionList.
  • Added braces to a single-line if in MatchNationalNumber for consistency with the rest of the file.

Test plan

  • dotnet build PhoneNumbers.slnx — clean, 0 warnings (TreatWarningsAsErrors)
  • dotnet test PhoneNumbers.Test/PhoneNumbers.Test.csproj — 414/414 passing on net8.0 and net10.0

Expression-bodied single-statement methods (GetInstance,
RegionDialingFromMatchesNumber, ConnectsToEmergencyNumber,
IsEmergencyNumber); is-null/is-not-null pattern matching in place of
== null / != null throughout; dropped a redundant else after an
unconditional return; added braces to a single-line if for consistency
with the rest of the file. No behavior change.
@codecov

codecov Bot commented Aug 25, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 52.94118% with 8 lines in your changes missing coverage. Please review.
✅ Project coverage is 87.41%. Comparing base (e75ae83) to head (0b4d1e3).

Files with missing lines Patch % Lines
csharp/PhoneNumbers/ShortNumberInfo.cs 52.94% 0 Missing and 8 partials ⚠️

❌ Your patch check has failed because the patch coverage (52.94%) is below the target coverage (90.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #412      +/-   ##
==========================================
- Coverage   87.42%   87.41%   -0.01%     
==========================================
  Files          41       41              
  Lines        3856     3855       -1     
  Branches      990      990              
==========================================
- Hits         3371     3370       -1     
  Misses        283      283              
  Partials      202      202              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions

Copy link
Copy Markdown

📊 Benchmark Results

Commit: 0b4d1e3 · Full run · Linux ubuntu-24.04-arm

Both sides were measured on the same runner in the same job, so the numbers are
comparable. Treat sub-percent differences as noise.

PR branch

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.400
  [Host]    : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
InputDigitPerKeystroke 1000 4.383 ms 0.0088 ms 0.0082 ms 54.6875 3.88 MB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.400
  [Host]     : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a
  Job-AMQORM : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a

Runtime=.NET 10.0  InvocationCount=1  IterationCount=20  
LaunchCount=1  RunStrategy=ColdStart  UnrollFactor=1  
WarmupCount=1  

Method Mean Error StdDev Allocated
CreateInstance 396.9 μs 112.0 μs 129.0 μs 119.48 KB
CreateInstanceAndLoadAllRegions 7,320.1 μs 446.2 μs 513.8 μs 1620.34 KB
FirstRegionLookup 476.8 μs 213.1 μs 245.4 μs 124.54 KB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.400
  [Host]    : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
ExtractPossibleNumber_CleanInput 1000 21.62 μs 0.019 μs 0.017 μs - -
ExtractPossibleNumber_WithLeadingJunk 1000 38.22 μs 0.052 μs 0.046 μs 0.6714 48360 B

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.400
  [Host]    : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
FindNumbers_Valid 100 144.2 μs 0.21 μs 0.18 μs 0.9766 70.71 KB
FindNumbers_StrictGrouping 100 326.8 μs 0.94 μs 0.88 μs 1.4648 124.84 KB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.400
  [Host]    : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
GetDescriptionForNumber 1000 1,433.18 μs 3.056 μs 2.386 μs 1.9531 196.59 KB
GetDisplayCountry 1000 18.58 μs 0.038 μs 0.035 μs 0.0916 7.56 KB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.400
  [Host]    : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
ParseValidateAndFormatPhoneNumbers 1000 2,656.0 μs 29.32 μs 27.42 μs 7.8125 577.71 KB
ParseOnly 1000 440.2 μs 0.37 μs 0.33 μs 4.8828 348.13 KB
ParseNationalFormat 1000 779.9 μs 1.98 μs 1.76 μs 5.8594 431.36 KB
ParseWithExtension 1000 1,137.9 μs 2.59 μs 2.43 μs 13.6719 957.38 KB
ValidateOnly 1000 784.2 μs 1.07 μs 0.95 μs - 41.11 KB
FormatOnly 1000 1,108.9 μs 4.05 μs 3.78 μs 1.9531 187.91 KB
PR base

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.400
  [Host]    : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
InputDigitPerKeystroke 1000 4.614 ms 0.0915 ms 0.1017 ms 54.6875 3.88 MB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.400
  [Host]     : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a
  Job-AMQORM : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a

Runtime=.NET 10.0  InvocationCount=1  IterationCount=20  
LaunchCount=1  RunStrategy=ColdStart  UnrollFactor=1  
WarmupCount=1  

Method Mean Error StdDev Allocated
CreateInstance 418.1 μs 122.4 μs 141.0 μs 119.48 KB
CreateInstanceAndLoadAllRegions 7,135.0 μs 419.5 μs 483.1 μs 1620.34 KB
FirstRegionLookup 472.8 μs 158.6 μs 182.6 μs 124.54 KB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.400
  [Host]    : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
ExtractPossibleNumber_CleanInput 1000 21.58 μs 0.023 μs 0.022 μs - -
ExtractPossibleNumber_WithLeadingJunk 1000 38.33 μs 0.090 μs 0.084 μs 0.6714 48360 B

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.400
  [Host]    : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
FindNumbers_Valid 100 143.2 μs 0.62 μs 0.58 μs 0.9766 70.71 KB
FindNumbers_StrictGrouping 100 325.9 μs 0.50 μs 0.45 μs 1.4648 124.84 KB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.400
  [Host]    : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
GetDescriptionForNumber 1000 1,448.41 μs 4.360 μs 4.079 μs 1.9531 196.59 KB
GetDisplayCountry 1000 18.60 μs 0.017 μs 0.015 μs 0.0916 7.56 KB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.400
  [Host]    : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.11 (10.0.11, 10.0.1126.37416), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
ParseValidateAndFormatPhoneNumbers 1000 2,734.7 μs 50.55 μs 47.28 μs 7.8125 577.71 KB
ParseOnly 1000 439.8 μs 0.98 μs 0.91 μs 4.8828 348.13 KB
ParseNationalFormat 1000 781.7 μs 2.69 μs 2.52 μs 5.8594 431.36 KB
ParseWithExtension 1000 1,122.5 μs 2.88 μs 2.69 μs 13.6719 957.38 KB
ValidateOnly 1000 782.3 μs 1.59 μs 1.41 μs - 41.11 KB
FormatOnly 1000 1,128.4 μs 7.26 μs 6.79 μs 1.9531 187.91 KB

@twcclegg
twcclegg merged commit 842e1ca into main Aug 26, 2026
7 of 8 checks passed
@twcclegg
twcclegg deleted the style/short-number-info branch August 26, 2026 14:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant