Имеет ли значение, если есть неиспользуемые функции, которые я помещаю в большой файл CoolFunctions.h / CoolFunctions.m, который включен везде в моем проекте? - PullRequest
1 голос
/ 20 мая 2009

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

Но вопрос: будут ли мешать эти неиспользованные методы? Будет ли мое приложение взорваться или будет иметь меньшую производительность? Или компилятор / компоновщик достаточно умен, чтобы знать, что функции A и B не нужны, и, следовательно, не копирует их «код» в получающееся приложение?

Ответы [ 4 ]

7 голосов
/ 20 мая 2009

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

Чтобы прямо ответить на ваш вопрос: нет, никогда не вызываемые методы не повлияют на производительность вашего приложения.

6 голосов
/ 20 мая 2009

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

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

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

2 голосов
/ 20 мая 2009

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

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

1 голос
/ 20 мая 2009

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

Если вы используете функцию, но не включили правильный файл .m или библиотеку, вы получите ошибку ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...