Есть ли способ предсказать, что нужно реорганизовать как сборку, чтобы добиться наибольшего повышения производительности сборки компилятора .NET? - PullRequest
0 голосов
/ 03 марта 2011

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

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

1 Ответ

1 голос
/ 03 марта 2011

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

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

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

Рассмотрите возможность одной сборки на набор связанных классов.Надеемся, что каждая такая сборка будет содержать классы, которые в основном ссылаются друг на друга.Там будут некоторые зависимости от других сборок.Вам необходимо выяснить, каким из новых сборок действительно нужен доступ, а к каким другим.

Использование ReSharper (или другого такого инструмента) может сделать этот процесс практичным.

...