Должен ли мой код функции быть разделен на другой исходный файл? - PullRequest
1 голос
/ 16 июня 2009

Я просто обнаружил, что копирую и вставляю один и тот же код дважды.

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

Ответы [ 4 ]

4 голосов
/ 16 июня 2009

Не повторяйся. Создайте включаемый файл с общей функцией.

2 голосов
/ 16 июня 2009

Согласитесь с приведенным выше ответом - не повторяйте (ха-ха, ирония повторения чьего-либо ответа - другого!).

Что касается классов и функций, я бы не сказал, что есть определенный ответ.

Я слышал аргументы в пользу того, что иногда мы должны отказываться от ОО-функциональности ради скорости, но я думаю, что в наше время это мало влияет на скорость компьютеров. Лично я всегда предпочитаю занятия, как только приложение / сайт начинает получать что-то большее, чем очень маленькое. Например, вы можете использовать две функции вместе для достижения определенного результата на странице. Повторное использование этого означает, что вы должны a) снова вызвать оба или b) написать третью функцию для вызова другой 2. В этом случае класс начинает выглядеть более привлекательным

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

2 голосов
/ 16 июня 2009

Вам следует прочесть книгу по объектно-ориентированному анализу и проектированию. Эти вопросы касаются принципов ОО.

Ваш лучший вариант, по моему скромному мнению, - взять книгу вроде: HF: OOA & D . Я прочитал его, и он ответил на ВСЕ твои вопросы.

Если 2 файла повторяют некоторый код, вы должны вывести этот код в функцию и использовать его в 2 файлах.

Помните, что у класса есть только одна ответственность, тогда вы должны поместить эту функцию в нужное место, например, если это код утилиты, вы не можете поместить его в модуль утилит.

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

Как это определить? Перед кодированием вы должны проанализировать и спроектировать свою проблему.

Короче, я рекомендую вам эту книгу, это все, что вам нужно: PP

1 голос
/ 16 июня 2009

Некоторое время назад я прочитал статью (я верю в Coding Horror, но поправьте меня, если я не прав) о копировании / вставке кода. По сути, если вы используете в своем коде много копий / вставок, вам следует подумать о том, чтобы превратить его в функцию, что является хорошей практикой, поскольку позволяет упростить код, не только сделать его более оптимизированным, но и сделать его более эффективным. другим разработчикам легче следовать.

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