Uwolnić się od if$flag="OK"; // This is the flag and we set it to OK                                             http://ro...
Tomasz Nurkiewicz5+ lat z Javą...Scala, JavaScriptSCJP, SCJD, SCWCD, SCBCD60K+ rep. na StackOverflowCommiter projektu Logb...
Ale dlaczego?
null twój wróg
com.google...Optional<T>     scala.Option[T]        Data.Maybe
flagi, wajchy, tryby, przełączniki
instanceof
Najlepszą dobrą praktyką jest zdrowy rozsądek
if(v > 10 ) size = 6;if(v > 22 ) size = 5;if(v > 51 ) size = 4;if(v > 68 ) size = 3;if(v > 117) size = 2;if(v > 145) size ...
int getSize(int v) {  int[] thr = {145, 117, 68, 51, 22, 10};  for (int i = 0; i < thr.length; i++) {    if (v > thr[i])  ...
public class Mapper<S extends Comparable<S>, T> {    private final S[] source;    private final T[] target;    // Builder ...
Dziękuję!
Uwolnić się od "if"
Upcoming SlideShare
Loading in …5
×

Uwolnić się od "if"

1,353 views
1,223 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,353
On SlideShare
0
From Embeds
0
Number of Embeds
50
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Uwolnić się od "if"

  1. 1. Uwolnić się od if$flag="OK"; // This is the flag and we set it to OK http://roflcopter.pl/6025
  2. 2. Tomasz Nurkiewicz5+ lat z Javą...Scala, JavaScriptSCJP, SCJD, SCWCD, SCBCD60K+ rep. na StackOverflowCommiter projektu Logbacknurkiewicz.blogspot.comscala.net.pl
  3. 3. Ale dlaczego?
  4. 4. null twój wróg
  5. 5. com.google...Optional<T> scala.Option[T] Data.Maybe
  6. 6. flagi, wajchy, tryby, przełączniki
  7. 7. instanceof
  8. 8. Najlepszą dobrą praktyką jest zdrowy rozsądek
  9. 9. if(v > 10 ) size = 6;if(v > 22 ) size = 5;if(v > 51 ) size = 4;if(v > 68 ) size = 3;if(v > 117) size = 2;if(v > 145) size = 1;return size; http://stackoverflow.com/questions/3786358
  10. 10. int getSize(int v) {  int[] thr = {145, 117, 68, 51, 22, 10};  for (int i = 0; i < thr.length; i++) {    if (v > thr[i])       return i+1;  }  return 1;}
  11. 11. public class Mapper<S extends Comparable<S>, T> {    private final S[] source;    private final T[] target;    // Builder to enable from... to... syntax and    // to make Mapper immutable    public static class Builder<S2 extends Comparable<S2>> {        private final S2[] data;        private Builder(final S2[] data){            this.data = data;        }        public <T2> Mapper<S2, T2> to(final T2... target){            return new Mapper<S2, T2>(this.data, target);        }    }    private Mapper(final S[] source, final T[] target){        final S[] copy = Arrays.copyOf(source, source.length);        Arrays.sort(copy);        this.source = copy;        this.target = Arrays.copyOf(target, target.length);    }    // Factory method to get builder    public static <U extends Comparable<U>, V> Builder<U> from(final U... items){        return new Builder<U>(items);    }    // Map a collection of items    public Collection<T> mapAll(final Collection<? extends S> input){        final Collection<T> output = new ArrayList<T>(input.size());        for(final S s : input){            output.add(this.map(s));        }        return output;    }    // map a single item    public T map(final S input){        final int sourceOffset = Arrays.binarySearch(this.source, input);        return this.target[            Math.min(                this.target.length­1,                sourceOffset < 0 ? Math.abs(sourceOffset)­2:sourceOffset            )        ];    }}
  12. 12. Dziękuję!

×