07.11.2015

Сквозь говнокод. Мясо и мухи отдельно

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


Если внимательно посмотреть, то структура mail ограничивает длину сообщения в 255 символов. Так же она завязывается на самописный контейнер и предполагает использование только в двухсвязном списке, который нужен для работы скроллинга. От этого всего необходимо избавиться!

Создадим класс, который будет описывать экземпляр одного письма и больше ничего!
 
// Mail.h
class Mail
{
   string  Destination;
   string  Sender;
   string  Title;
   string  Subj;
public:
   Mail(void); // Пустой конструктор для тестов
   Mail(string Destination, string Sender, string Title, string Subj);
   ~Mail(void) {}

   string getDestination() {return Destination;}
   string getSender() {return Sender;}
   string getTitle() {return Title;}
   string getSubj() {return Subj;}
};

//Mail.cpp
#include "Mail.h"

Mail::Mail()
{
 this->Destination = "Destination";
 this->Sender = "Sender";
 this->Title = "Title";
 this->Subj = "Subj\n\r more text \n\r \n\r sign";
}

Mail::Mail(string Destination, string Sender, string Title, string Subj)
{
 this->Destination = Destination;
 this->Sender = Sender;
 this->Title = Title;
 this->Subj = Subj;
}

Итак, у нас есть отдельный класс, который отвечает за письмо, при этом, если, вдруг, адресатов станет 2 и более, то изменения коснутся только этот класс, т.к. он возвращает строку, а значит он же будет заниматься обработкой string Destination[];. Так же в этом случае надо будет добавить метод, возвращающий массив, если это потребуется в прикладном коде. 
  

Комментариев нет:

Отправить комментарий