2014/1/15 Gary Gregory <garydgreg...@gmail.com>

>  On Wed, Jan 15, 2014 at 8:06 AM, Benedikt Ritter <brit...@apache.org>
> wrote:
>
> > Hi Gary,
> >
> > 2014/1/15 Gary Gregory <garydgreg...@gmail.com>
> >
> > > On Wed, Jan 15, 2014 at 7:00 AM, Benedikt Ritter <brit...@apache.org>
> > > wrote:
> > >
> > > > Hi all,
> > > >
> > > > we currently have StringUtils.getLevenshteinDistance. LANG-944 [1] is
> > > about
> > > > introducing a new string algorithm called Jaro Winkler Distance [2].
> > > Since
> > > > StringUtils already does a lot of things, I'm wondering if it may
> make
> > > > sense to introduce a new class that serves as a host for more string
> > > > algorithms to come. It would look something like:
> > > >
> > > > StringAlgorithms.levenshteinDistance(str1, str2);
> > > > StringAlgorithms.jaroWinklerDistance(str1, str2);
> > > >
> > > > We would deprecate StringUtils.getLevenshteinDistance and delegate to
> > the
> > > > new class. It could be removed from StringUtils in the next major
> > > release.
> > > >
> > >
> > > > Thoughts?
> > > >
> > >
> > > Yuck!
> > >
> > > I'd rather have once class per algo which reminds me that [codec] might
> > be
> > > a better place for things like this that 'encode' strings into
> something
> > > else.
> > >
> >
> > Both methods return a double value modeling some kind of score. They do
> not
> > encode. Maybe StringAlgorithms is the wrong name? How About StringScore
> or
> > something like that?
> >
>
> Still wrong IMO and not OO. A single class will become another
> dumping-ground/kitchen-sink like StringUtils. I would not want to see one
> algo be a one method one liner impl and another algo be a complex 20 method
> job. I guess we could organize algos using nested classes like
> StringFoo.BarAlgo but that's not ideal. All algo classes in a new pkg is
> another way to go.
>

We already have o.a.c.lang3.text, maybe this would fit?

What I want to avoid is something like:

LevenshteinDistance algo = new LevenshteinDistance()
double dist = algo.getDistance(str1, str2);

If those algorithms don't have a state, it doesn't make sense to force
creation of an object. I like to idea of internal classes.


>
> Gary
>
>
> >
> >
> > >
> > > Gary
> > >
> > >
> > > > Benedikt
> > > >
> > > > [1] https://issues.apache.org/jira/i#browse/LANG-944
> > > > [2] http://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance
> > > >
> > > > --
> > > > http://people.apache.org/~britter/
> > > > http://www.systemoutprintln.de/
> > > > http://twitter.com/BenediktRitter
> > > > http://github.com/britter
> > > >
> > >
> > >
> > >
> > > --
> > > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
> > > Java Persistence with Hibernate, Second Edition<
> > > http://www.manning.com/bauer3/>
> > > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> > > Spring Batch in Action <http://www.manning.com/templier/>
> > > Blog: http://garygregory.wordpress.com
> > > Home: http://garygregory.com/
> > > Tweet! http://twitter.com/GaryGregory
> > >
> >
> >
> >
> > --
> > http://people.apache.org/~britter/
> > http://www.systemoutprintln.de/
> > http://twitter.com/BenediktRitter
> > http://github.com/britter
> >
>
>
>
> --
> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
> Java Persistence with Hibernate, Second Edition<
> http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>



-- 
http://people.apache.org/~britter/
http://www.systemoutprintln.de/
http://twitter.com/BenediktRitter
http://github.com/britter

Reply via email to