когда сделать класс и функцию

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

Что такое хорошие книги, которые я прочитал для изучения этих понятий?

9
задан Benjamin 6 December 2013 в 15:23
поделиться

6 ответов

Очень общий вопрос, поэтому несколько практических правил:

  • повторное использование кода: когда у вас есть один и тот же или очень похожий фрагмент кода надвое. мест, его следует переместить в функцию

  • читабельности: если функция занимает более одной страницы на экране, вы можете захотеть разбить ее на несколько функций

  • focus: каждый класс или функция должны выполнять только одну конкретную задача. Все, что не является основным для этой цели, следует делегировать другим классам / функциям.

10
ответ дан 4 December 2019 в 13:01
поделиться

Взгляните на

Процедуру, подпрограмму или функцию? , Объектно-ориентированное программирование

Объект на самом деле дискретный набор функций и процедур, все относящиеся к определенной реальной концепции, такой как владелец банковского счета или хоккеист в {{1} }} компьютерная игра. Другие части программного обеспечения могут получить доступ к объекту только вызывая его функции и процедуры , которым разрешено вызывать посторонние лица.

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

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

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

1
ответ дан 4 December 2019 в 13:01
поделиться

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

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

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

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

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

3
ответ дан 4 December 2019 в 13:01
поделиться

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

  • Классы
    • Наборы связанных данных принадлежат классам вместе
    • Функции для работы с этими данными должны находиться в классах вместе
      Классическим примером является класс Car функциями были бы такие вещи, как Drive и AddGass
  • Функции
    • Если вы собираетесь использовать его больше, то один раз он должен быть в функции
    • Большинство функций не должно занимать больше одного экрана кода
    • Функции Должны делать что-то хорошо, а не кучу вещей плохо

Существует масса мнений, но со временем вы должны выработать свой собственный стиль.

1
ответ дан 4 December 2019 в 13:01
поделиться

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

0
ответ дан 4 December 2019 в 13:01
поделиться

Это на самом деле очень простой ник!

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

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

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

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

Вы можете часто использовать анализаторы для поиска различных показателей, которые будут «ставить оценку» вашему повторному использованию и дублированию кода.

Удачного обучения!

1
ответ дан 4 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: