Вы бы использовали массив или пользовательский класс для простой обработки данных? (Рубин) - PullRequest
0 голосов
/ 17 января 2010

Я могу сделать немного кодирования в ruby. Я только коснулся объектов, и я не настолько объектно-грамотен, я имею в виду, что еще не думаю об объектах :-)

У меня есть данные, которые я регулярно собираю на форуме. Мне нужны такие поля, как

  • автор, дата публикации, название, категория, количество просмотров и т. Д. И т. Д. = массив , на мой взгляд.

Тогда я хочу быть в состоянии эти в рубине

  • сохранить всю партию (быстрое решение - csv или xml - позже, вероятно, некоторая база данных sql)
  • отсортировать по полю
  • загрузить / прочитать мой файл, чтобы обновить поля и сделать некоторую статистику, извлечь некоторые данные
  • добавить новые поля легко на случай, если мне нужно

редактировать, изменять мой "файл / базу данных" за пределами ruby ​​.

Я полагаю, что могу выполнить любую операцию, например, изменить количество просмотров поста, изменить дату последнего ответа в посте и т. Д., Используя массив или объект.


поэтому мой вопрос: вы бы использовали

...................................... пользовательский класс / объект или массив ?

Не могли бы вы сказать, почему?


Ответы [ 3 ]

1 голос
/ 17 января 2010

Вы имеете в виду "вы бы использовали массив или пользовательский класс" для обработки этих данных.

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

1 голос
/ 17 января 2010

Мне кажется логичным, по крайней мере, создать объект для хранения и работы с данными, которые вы копируете. Как правило, у вас есть переменные экземпляра для каждого из упомянутых вами полей (автор, заголовок, категория, просмотры, дата_поставки) и, возможно, некоторые методы для их заполнения из данных, а также для чтения / записи.

С точки зрения хранения данных для этих объектов, использование ORM, например ActiveRecord или DataMapper , делает это очень просто. ORM позволяет сопоставить данные в хранилище данных, например MySQL, с соответствующими объектами Ruby. Он также предоставит несколько удобных методов для сохранения, обновления и запроса этих объектов.

Тем не менее, может быть полезно изучить собственные методы сопоставления данных с файлами XML.

1 голос
/ 17 января 2010

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

Поскольку вы хотите выполнять операции сохранения, сортировки, обновления, статистики и т. Д. Над собранными данными, поэтому имеет смысл иметь объект Post с данными / атрибутами (такими как автор, дата публикации, заголовок, категория и т. Д.) И операции / методы, которые вы хотели бы выполнить с вашими данными. Абстрагирование данных и поведения вашего объекта в класс позволит легко поддерживать ваш код и понять, где вы можете легко увидеть ответственность класса с помощью методов, определенных в этом классе, и как эти методы изменяют состояние вашего объекта, манипулируя атрибуты объекта / данные.

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