2011-01-03 2 views
0

Редактировать: Хорошо, чтобы поставить вопрос в вопрос, я прошу о возможных путях, которые я должен организовать в классах и какие структуры данных я должен использовать для хранения информации из транзакций. В настоящее время у меня есть это: (http://dl.dropbox.com/u/9210234/classes.jpg) - даже близко к тому, что я хочу, это то, над чем я работаю. И в настоящее время он хранит данные отчета в словарных объектах в виде строк. Мне нужно иметь возможность легко извлекать эту информацию, находить транзакции путем поиска по полям и тому подобного, и я уверен, что способ, которым я сейчас нахожусь, не будет таким простым.Общие предложения по дизайну для нового проекта

Я хочу создать простую в использовании библиотеку C# для использования API отчетов Payflow. Имеется полный справочник here. Это очень приятно и позволяет легко получать информацию о прошлых транзакциях с кредитными картами, которые моя компания обработала. Я уже работал с ним, поэтому на самом деле его использование не является проблемой. Я нахожусь в точке, где я могу взломать приложение, которое делает то, что необходимо на данный момент, или я могу создать что-то, что действительно хорошо, и будет полезно в различных программах, которые я мог бы сделать. В настоящее время я пишу идеи, когда они приходят ко мне, а затем делают классы с соответствующими методами для упрощения вызовов в API, а затем испытывают все возможные возможности, которые потребуются. Как только я получу прототип работы, я планирую вернуться и полностью спроектировать его, а затем продолжить и создать его.

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

Я создал тестовое приложение для работы и тестирования классов. Вот картина классов до сих пор: (http://dl.dropbox.com/u/9210234/classes.jpg). Да, это беспорядок. Весь код находится в документе формы, без интерфейсов или чего-то еще. Класс ReportWrapper генерирует XML-запрос на основе параметров (таких как диапазон дат, тип отчета и т. Д.). Другой класс под названием BaseCall принимает XML-запрос и фактически отправляет его в API и возвращает ответ. ReportMetaData анализирует ответ из запроса метаданных отчета и заполняет свойства полезной информацией (например, количеством страниц данных). XmlUtility - это просто вспомогательный класс, который выполняет такие функции, как поиск значений одного узла или преобразование строк данных с уникальными атрибутами в словари ключевых слов/значений. Это то, что хранится в ReportStorage прямо сейчас - словарь с фактическими данными отчета. Затем metaData используется для определения того, какие поля в данных отчета автоматически. Страница 36 из руководства по платежным потокам, приведенная выше, показывает, как выглядит ответ на данные.

После запроса страницы данных строки хранятся в файле reportStore как строки XML. Затем XmlToAssoc принимает строку xml, имя тега, имя атрибута этого тега (который используется как уникальный идентификатор API) и, возможно, имя дочернего узла. Он возвращает словарь со значением атрибута в качестве ключа и innerXml в качестве значения. Затем я могу получить информацию об одной транзакции, перекрестно ссылаясь на метаданные с данными поля, чтобы получить полную картину транзакции. Кроме того, есть dataType, возвращенный с именем поля, которое я буду использовать позже.

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

reportData 
reportDataRow 1: 
    fieldData 1: 
    {"Transaction ID", "string", "VLFA6D1CE4A6"} 
    fieldData 2: 
    {"Time","date","2010-12-19 00:21:41"} 
    [...] 
reportDataRow 2: 
    fieldData 1: 
    {"Transaction ID", "string", "VLFA6D33554C"} 
    fieldData 2: 
    {"Time","date","2010-12-19 08:02:57"} 
    fieldData 3: 
    [...] 
reportDataRow 3: 
    [...] 

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

+5

Вопросы, если это вряд ли будет прочитано всеми, кроме самых больных ... –

+1

@Dmitri: или читать вообще, так как они скорее всего будут закрыты как «не настоящий вопрос». –

+1

попробуйте задать один конкретный вопрос одновременно. –

ответ

2

You очевидно, знакомы с объектами, поэтому наилучшим предложением, которое я могу вам дать, является поиск объектно-ориентированных принципов. Принципы S.O.L.I.D - отличное место для начала, вы можете найти действительно хорошие статьи.

Here является для вас одним из многих. Поиск Google для объектно-ориентированных принципов дизайна также, вероятно, поможет вам.

+0

Я перезапустил свой проект с помощью модульного тестирования и принципов SOLID, и я действительно думаю, что у меня есть ручка. Это то, что я искал. – Chris

Смежные вопросы