Вопрос

В моем проекте C у меня есть довольно большой файл utils.c.В нем действительно полно множества разного рода утилит.Я чувствую себя немного непослушным, просто набивая туда разные функции.Например, в нем есть некоторые утилиты, связанные с низкоуровневыми вещами, такие как функция нижнего регистра(), а также несколько довольно сложных утилит, таких как преобразование в/из разных цветовых форматов.

Мой вопрос: очень ли неприлично иметь такой большой файл utils.c со множеством различных типов утилит?Должен ли я разбить его на множество различных типов служебных файлов?Например, Graphics_utils.c и т. д. Что вы думаете?

Это было полезно?

Решение

Если только вы КОГДА-ЛИБО будете поддерживать эти вещи, это вопрос того, когда сложность дойдет до точки, когда вы обнаружите, что ищете что-то.Пришло время провести рефакторинг и реорганизацию (за реорганизацию приходится платить, как и за отказ от реорганизации).

Если ВОЗМОЖНО, что кто-то еще будет поддерживать проект, включающий ваши утилиты, вы должны учитывать ИХ болевые точки при принятии решения о реорганизации.У них НАМНОГО ниже, чем у вас.

Другие советы

Разбивка их на отдельные файлы по категориям (например, графика, строки и т. д.) приведет к лучшей организации, упростит поиск определенных фрагментов кода, позволяя просматривать файлы меньшего размера, а не один большой файл.

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

http://iface Thoughts.net/2006/04/15/stable-dependents-principle/

Я склонен разбивать их на различные подпрограммы, как вы говорите (graphics_utils), когда это становится уместным.

Разбить его.Материал будет легче найти, легче повторно использовать, легче рефакторить, легче проводить модульное тестирование.Недавно мне нужно было получить набор методов обработки дат ISO-8601 из огромного служебного класса статических методов Java, и было очень сложно найти те 5% кода, которые мне были нужны.

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

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

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

У меня есть (достаточно большой) проект с таким модулем и есть логика программирования, для которой есть до 5-6 реализаций (по одному и тому же).

Как и все остальные, я бы их разбил.Но сейчас я склонен использовать методы расширения, поэтому у меня будет один класс (и один файл) для каждого расширяемого класса (например, StringExtensions, SqlDataReaderExtensions, и т. д).Я считаю, что это имеет тенденцию хорошо разбивать служебные методы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top