Управление повторяющимся кодом и документацией на JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Управление повторяющимся кодом и документацией на Java

Сообщение Anonymous »

Чрезвычайно повторяющийся код — это, как правило, плохо, и существуют шаблоны проектирования, которые могут помочь свести это к минимуму. Однако иногда это просто неизбежно из-за ограничений самого языка. Возьмите следующий пример из java.util.Arrays:

Код: Выделить всё

/**
* Assigns the specified long value to each element of the specified
* range of the specified array of longs. The range to be filled
* extends from index fromIndex, inclusive, to index
* toIndex, exclusive. (If fromIndex==toIndex, the
* range to be filled is empty.)
*
* @param a the array to be filled
* @param fromIndex the index of the first element (inclusive) to be
*        filled with the specified value
* @param toIndex the index of the last element (exclusive) to be
*        filled with the specified value
* @param val the value to be stored in all elements of the array
* @throws IllegalArgumentException if fromIndex > toIndex
* @throws ArrayIndexOutOfBoundsException if fromIndex < 0 or
*         toIndex > a.length
*/
public static void fill(long[] a, int fromIndex, int toIndex, long val) {
rangeCheck(a.length, fromIndex, toIndex);
for (int i = fromIndex; i>> 1; // the fix
Приведенная выше строка встречается в исходном коде 11 раз!
Итак, мои вопросы:
  • Как на практике обрабатываются повторяющиеся Java-коды/документация? Как они разрабатываются, поддерживаются и тестируются?

    Вы начинаете с «оригинала» и делаете его как можно более зрелым, а затем копируете и вставляете по мере необходимости и надеетесь ты не ошибся?
  • А если ты ошибся в оригинале, то просто исправь везде, если только тебе не удобно удалять копии и повторять всю репликацию процесс?
  • И вы применяете тот же процесс для кода тестирования также?
  • Выиграет ли Java от какой-то ограниченной предварительной обработки исходного кода для такого рода вещей?
  • Возможно, у Sun есть собственный препроцессор помочь писать, поддерживать, документировать и тестировать такой повторяющийся библиотечный код?


В комментарии требовался еще один пример, поэтому я извлек его из Google. Коллекции: com.google.common.base.Predicates, строки 276–310 (

Код: Выделить всё

AndPredicate
) против строк 312–346 (

Код: Выделить всё

OrPredicate
).
Исходный код этих двух классов идентичен, за исключением:

Подробнее здесь: https://stackoverflow.com/questions/233 ... on-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»