Вопросы с тегом «refactoring»

Рефакторинг - это дисциплинированный метод реструктуризации существующего тела кода, изменения его внутренней структуры без изменения внешнего поведения.

209
Мой босс просит меня прекратить писать небольшие функции и делать все в одном цикле

Я прочитал книгу под названием « Чистый код » Роберта Мартина. В этой книге я видел много методов для очистки кода, таких как написание небольших функций, тщательный выбор имен и т. Д. Это, безусловно, самая интересная книга о чистом коде, которую я читал. Однако сегодня моему боссу не понравилось,...

186
Большая часть моего кода имеет большой недостаток дизайна. Завершить или исправить это сейчас? [закрыто]

Я учусь в старшей школе и работаю над проектом на C # с моим другом примерно такого же уровня квалификации, как и я. Пока что мы написали примерно 3000 строк кода и 250 строк тестового кода за промежуток в 100 коммитов. Из-за школы я отложил проект на несколько месяцев, и недавно мне удалось снова...

162
Почему я должен использовать фабричный класс вместо прямого создания объекта?

Я видел историю нескольких проектов библиотек классов С # и Java на GitHub и CodePlex, и я вижу тенденцию перехода к фабричным классам в отличие от непосредственного создания объектов. Почему я должен широко использовать фабричные классы? У меня есть довольно хорошая библиотека, где объекты...

148
Должен ли я выполнить рефакторинг кода, помеченного как «не изменять»?

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

133
Каковы ключевые моменты эффективной работы с устаревшим кодом? [закрыто]

Я видел книгу « Эффективная работа с устаревшим кодом», рекомендованную несколько раз. Каковы ключевые моменты этой книги? Есть ли что-то большее в работе с унаследованным кодом, чем добавление модульных / интеграционных тестов, а затем...

118
Должен ли я удалить код, на который нет ссылок?

Я работаю над кодовой базой среднего размера (100 тыс. Строк), все это относительно новый код (менее года) и имеет хороший охват модульных тестов. Я продолжаю сталкиваться с методами, которые либо больше нигде не используются, либо упоминаются только в модульных тестах, которые проверяют только...

109
Обоснование предпочитать локальные переменные переменным экземпляра?

Кодовая база, над которой я работаю, часто использует переменные экземпляра для обмена данными между различными тривиальными методами. Первоначальный разработчик непреклонен, что он придерживается лучших практик, изложенных в книге « Чистый код » дядюшки Боба / Роберта Мартина: «Первое правило...

91
TDD Red-Green-Refactor и если / как проверить методы, которые становятся частными

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

78
Можно ли заменить оптимизированный код читаемым кодом?

Иногда вы сталкиваетесь с ситуацией, когда вам нужно расширить / улучшить какой-то существующий код. Вы видите, что старый код очень скудный, но его также сложно расширять, и на его чтение требуется время. Это хорошая идея, чтобы заменить его современным кодом? Некоторое время назад мне понравился...

77
Это плохая практика, чтобы модифицировать код строго для целей тестирования

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

74
Сколько строк в классе слишком много в Java? [закрыто]

По вашему опыту, какое полезное практическое правило для того, сколько строк кода слишком много для одного класса в Java? Чтобы было ясно, я знаю, что количество строк даже близко не соответствует реальному стандарту, который следует использовать для того, что должно быть в определенном классе, а...

73
Исправление орфографической ошибки в имени метода

Один из методов, которые я обычно использую в нашей кодовой базе, написан с ошибками (и это предшествовало мне). Это действительно раздражает меня не просто потому, что оно введено неправильно, но, что более важно, оно заставляет меня ВСЕГДА неправильно вводить имя при первом наборе (а затем я...

72
Имеет ли смысл писать тесты для унаследованного кода, когда нет времени для полного рефакторинга?

Я обычно стараюсь следовать советам книги Эффективная работа с унаследованным Cod е . Я нарушаю зависимости, перемещаю части кода в @VisibleForTesting public staticметоды и в новые классы, чтобы сделать код (или, по крайней мере, его часть) тестируемым. И я пишу тесты, чтобы убедиться, что я ничего...

71
Как я могу взять на себя ответственность за мой код, когда коллега делает ненужные улучшения без уведомления?

Один из моих товарищей по команде является мастером на все руки в нашем IT-магазине, и я уважаю его понимание. Однако иногда он просматривает мой код (он занимает второе место в команде лидера нашей команды, так что это ожидаемо) без единого мнения. Поэтому иногда он просматривает мои изменения,...

59
Написание тестов для кода, цель которого я не понимаю

Я недавно завершил рефакторинг черного ящика. Я не могу проверить это, потому что не могу понять, как это проверить. На высоком уровне у меня есть класс, инициализация которого включает в себя получение значений из некоторого класса B. Если класс B «пустой», он генерирует некоторые разумные...

57
Как я могу сделать рефакторинг приоритетом для моей команды?

Кодовая база, с которой я работаю ежедневно, не имеет автоматических тестов, непоследовательных имен и множества комментариев, таких как «Почему это здесь?», «Не уверен, нужно ли это» или «Этот метод не назван правильно», и код изобилует «Журналы изменений», несмотря на то, что мы используем...

55
Согласование правил бойскаутов и оппортунистического рефакторинга с обзорами кода

Я большой сторонник правила бойскаутов : Всегда проверяйте модуль более чистым, чем когда вы его проверяли. "Независимо от того, кто был первоначальным автором, что, если бы мы всегда приложили некоторые усилия, независимо от того, насколько они малы, чтобы улучшить модуль. Каков будет результат? Я...

55
Как написать модульные тесты перед рефакторингом?

Я прочитал некоторые ответы на вопросы в том же ключе, например, «Как вы поддерживаете свои юнит-тесты при рефакторинге?». В моем случае сценарий немного отличается тем, что мне дали проект для проверки и приведения в соответствие с некоторыми нашими стандартами, в настоящее время тестов для...

53
Что такое код «зависти к особенностям» и почему он считается запахом кода?

Этот вопрос о SO говорит о том, чтобы исправить то, что OP считал кодом зависти к функциям . Другой пример, где я видел, как цитируется эта изящная фраза, - недавно полученный ответ здесь, в programmers.SE. Несмотря на то, что я добавил комментарий к этому ответу с просьбой предоставить информацию,...

52
Как лучше всего упорядочить параметры в функции?

Иногда (редко) кажется, что создание функции, которая принимает приличное количество параметров, является наилучшим маршрутом. Однако, когда я это делаю, я чувствую, что часто выбираю порядок параметров случайным образом. Я обычно выбираю «по важности», сначала выбираю самый важный параметр. Есть...