1. Java / Говнокод #9924

    +110

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    public abstract class AbstractSegment<P extends Number, V extends IOffsettable<P, V>,
    		U extends AbstractSegment<P, V, U>> implements IOffsettable<P, U>, Iterable<V>, Serializable {
    	...
    	
    	protected final List<V> offsetHelper(final P dx, final P dy) {
    		return Lists.transform(points, new Function<V, V>() {
    			@Override
    			public V apply(final V input) {
    				return input.offset(dx, dy);
    			}
    		});
    	}
    
    
    
    public final class FloatSegment extends AbstractSegment<Float, FloatPoint, FloatSegment> {
    	...
    	@Override
    	public FloatSegment offset(final Float dx, final Float dy) {
    		return new FloatSegment(offsetHelper(dx, dy));
    	}
    }

    Запостил: someone, 11 Апреля 2012

    Комментарии (3) RSS

    • А чем плохо?
      Ой, new FloatSegment() не нужен - это?
      Ответить
    • Хотя, хз, если там кроме списка с точками еще много чего, то может и нужен - но если судить только по тому, что есть, то может можно было просто списком ограничиться? Или имелось в виду что Function новый создается каждый раз? - ну так это тоже требует объяснения, может дешевле создавать по-новой, чем держать в памяти все время.
      Ответить
    • Данных слишком мало, чтобы оценить. Если FloatSegment интенсивно использует переданный список, не делая его копии, вычисления элементов Lists.transform будут выполняться при каждом новом обращении. Довольно абстрактный код, но в принципе говна вроде особого нет, разве что offsetHelper лучше было бы назвать applyOffset (на 1.5 не скомпилится - @Override над методом интерфейса).
      Ответить

    Добавить комментарий