Как осуществить рефакторинг в ответвлении без схождения с ума?

Я думаю, что главная проблема - это не обратная связь, которая отлично работает с \1 в java.

Ваша проблема скорее всего «обтекание» шаблона регулярного выражения в Java.

Если вы хотите, чтобы шаблон

(\d)\1{14}

передавался движку регулярных выражений, вам сначала нужно его избежать, потому что это будет строка java при написании:

(\\d)\\1{14}

Voila работает как шарм: goo.gl/BNCx7B (добавьте http: //, SO не разрешает Url-Shorteners, но у tutorialspoint.com нет другого выбора, как кажется)

Offline-Example:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HelloWorld{

     public static void main(String []args){
        String test = "555555555555555"; // 5 followed by 5 for 14 times.

        String pattern = "(\\d)\\1{14}";

        Pattern r = Pattern.compile(pattern);
        Matcher m = r.matcher(test);
        if (m.find( )) {
           System.out.println("Matched!");   
        }else{
           System.out.println("not matched :-(");    
        }
     }
}
5
задан ripper234 22 September 2008 в 22:41
поделиться

8 ответов

Рефакторинг в крупном масштабе должен быть сделан в нужное время во временной шкале разработки. Если Вы делаете огромные объемы рефакторинга около выпускают, Вы закончите тем, что причинили себе боль, потому что Вы представите болезненные слияния в то время, когда изменения должны будут быть минимизированы. Чем более разрушителен Ваш рефакторинг будет, тем ранее в цикле разработки это должно произойти (и более специальный процесс, там должен быть для него, например, остановка редактирует в затронутые файлы как можно больше сроком на время).

Постоянно слияние с и от соединительной линии является обычно хорошей практикой.

Почему работа в ответвлении вообще в этом случае? Поскольку Вы имеете больше контроля (можно прекратить объединяться в соединительную линию для стабилизации его для выпуска, например, не останавливаясь checkins к ответвлению разработки). Поскольку можно поместить, высокий уровень проверки вокруг слияния для транкинга, не влияя на скорость регистрации к разработке переходят очень.

6
ответ дан 18 December 2019 в 09:55
поделиться

Я иду с 1, вношу небольшие изменения, когда возможный и часто регистрируются, или иначе слияния становятся болезненными. Наличие отдельного ответвления может сделать вещи легче, если необходимо работать над другими вещами одновременно, или рефакторинг занимает больше времени, чем Вы первоначально думали. Другая премия - то, что это помогает нескольким людям принять участие в рефакторинге, и можно регистрировать вещи к ответвлению так часто, как Вам нравится.

3
ответ дан 18 December 2019 в 09:55
поделиться

Я предложил бы следующую стратегию сценарии, где окно времени между выпусками составляет по крайней мере 2 месяца.

Когда Вы начинаете быть рядом с выпуском, создаете ответвление выпуска. Ответвление выпуска нельзя рассматривать как никакой рефакторинг здесь, и я - (почти) функция полное ответвление. Это в этой точке, необходимо начать фокусировать усилие на стабилизации выпуска на ответвлении выпуска. Объедините назад любые исправления ошибок от ответвления выпуска на соединительную линию по мере необходимости. Между тем соединительную линию рассматривают как постоянно открытая для рефакторинга. Также, если выполнимая попытка уменьшить рефакторинг, поскольку Вы становитесь ближе к главной версии и ускоряете ее в дни сразу после один.

В случае, если Вы следуете непрерывной стратегии выпуска (т.е. выпуск каждые 1 - 2 недели), Вы не должны разделять рефакторинг и кодирование на отдельных ответвлениях, если Вы не делаете основное хирургическое улучшение. В таких хирургических ситуациях с улучшением (который должен быть растянут не менее 3 месяцев каждый), отбросьте выпуск из своего расписания заранее каждый раз, когда Вы намереваетесь выполнить слияние, используйте один из циклов для слияния выпуска и увеличенного тестирования, держите пальцы скрещенными и затем выпустите.

2
ответ дан 18 December 2019 в 09:55
поделиться

Изменения должны быть любой быстрыми (так не, слишком много изменяется под Вами), или иначе локальный (таким образом, Вы только заботитесь об изменениях в небольшом количестве мест).

Иначе слияние может быть такой же работой, как осуществление рефакторинг было. Как алгоритм, просто не работает оптимистическая блокировка, когда слишком много транзакций перестали работать и должны быть перезапущены.

Существенно, Вы не можете позволить ситуацию, где 20 программистов в компании все меняют имена 50% методов в кодовой базе каждый день. И в этом отношении, если несколько человек всегда осуществляют рефакторинг в тех же местах одновременно, то они только отменяют работу друг друга так или иначе.

Если программисты проводят много времени, вручную контролируя слияния, то представляют Вашим менеджерам возможность повысить производительность путем изменения пути, задачи определены и присвоены.

Кроме того, "осуществляют рефакторинг целую систему для использования фабрик везде", не задача. "Осуществите рефакторинг этот интерфейс, и его реализации для использования фабрик" задача.

2
ответ дан 18 December 2019 в 09:55
поделиться

Это - то, где хороший распределенный VCS выделяется. Но я предполагаю, что Вы уже посвящаете себя SVN.

Лично, я просто делаю осуществление рефакторинг и затем объединяюсь как можно скорее для обхода ада конфликта. Это не самый продуктивный метод, но наименее подверженное ошибкам.

У меня когда-то было ответвление, которое находилось бездействующее в течение приблизительно 3 недель, потому что функция была 'приостановлена', и было невозможно объединиться. Я только что запустил функцию снова в новом ответвлении, с помощью старого в качестве ссылки для определенных частей.

1
ответ дан 18 December 2019 в 09:55
поделиться

Рискуя тем, чтобы быть очевидным, я сказал бы, стараются не переходить в целом. Сумма издержек, которые это вызывает, не должна быть недооценена. Даже когда Вы думаете, что не можете удержать больше (выпустите одну из системы в производстве, выпустите два создаваемый, но также и запросы на изменение выпустить один), все еще попытайтесь найти иначе: Нет ли действительно никакой способ, которым можно изолировать функциональность, не переходя (например, отделить "общий" проект и некоторые подпроекты)? Нет ли действительно никакой способ, которым можно интегрировать весь код головы (например, создать классы Стратегии, которые включают различия или создают переключатели для включения или выключения новых возможностей)?

Если бы абсолютно необходимо перейти, я пошел бы с опцией 1. Попытайтесь объединить максимально небольшие изменения и сделать это часто.

1
ответ дан 18 December 2019 в 09:55
поделиться

Непрерывная интеграция является ключом... 1 маленький пакет изменений за один раз...

1
ответ дан 18 December 2019 в 09:55
поделиться

Фиксируйте рано, часто фиксируйте.

Или в этом случае... Объединитесь рано, часто объединяйтесь.

1
ответ дан 18 December 2019 в 09:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: