Add static methods for all operations, #54 - #59
Open
Hamad-canCode wants to merge 1 commit into
Open
Conversation
Every algorithm now exposes its operations as public static methods (GetDistance/GetSimilarity/GetLength/GetProfile). Instance methods delegate to them, passing any configured state (k, n, threshold, MaxOffset, character weights) as parameters, so existing signatures and behavior are unchanged.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #54.
The library required instantiating an object to run any algorithm. Every type now
also exposes its operations as public static methods, so a one-off computation
needs no allocation:
Supporting changes
GetProfile(s, k) carrying the same k <= 0 guard as the constructor.
consts so they can serve as the statics' default arguments.
ICharacterInsDel as a parameter; NormalizedLevenshtein dropped its
Levenshtein field in favor of Levenshtein.GetDistance; the internal
LongestCommonSubsequence.Length became the public GetLength.
delegation.
Benchmarks
Added a Static variant of each benchmark under #if STATIC_METHODS, with the
constant defined in the benchmarks csproj so it can be removed when benchmarking
against an older version of the library. Also added the missing instance Sift4
benchmark to give its static counterpart a baseline.
Tests
New StaticMethodsTest asserts static/instance parity for every algorithm,
including non-default state and the span overloads. Test count goes from 57 to 72,
passing on net8.0, net9.0, net10.0, and net481.