Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Какое имя я должен дать этим двум классам, которые были отделены от одного класса?

Автор вопроса: EarlzОтветов: 2

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

  1. Класс, который "контролирует" XML и абстрактно говорит, что с ним делать.
  2. Класс, который обрабатывает все с помощью XML и предоставляет простой интерфейс для обновления и чтения того, что беспокоит №1.

Теперь реализация стала значительно понятнее. # 1 не нужно беспокоиться о пространствах имен XML, запросах XPath или о чем-то подобном. Он просто говорит: "Эй, №2, обновите эту часть с" foo "до" bar "".

Однако я не знаю, как это назвать. Старый класс был назван чем-то моим FooManifestXml. Как мне назвать эти два класса? У меня есть кое-какие идеи, но я бы не хотел искажать результаты.

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

  • У вас все хорошо, если ваша основная проблема - это именование классов;) Я бы лично, вероятно, назвал их как-то вроде FooManifestXmlController и FooManifestXmlHandler. 500 - Internal Server Error 07.02.2013

design-patternsnaming-conventionsnaming

Ответы

Ответ 1 · рейтинг 2 · oleksii

Похоже на шаблон команды с небольшими изменениями.

Класс, который "контролирует" XML и абстрактно говорит, что с ним делать

Это может быть ICommand

public interface ICommand
{
    void Execute();
}

Класс, который обрабатывает все с помощью XML и предоставляет простой интерфейс для обновления и чтения того, что беспокоит №1

Это может содержать выполнение действий:

public class UpdateCommand : ICommand
{
    private XML file;

    public UpdateCommand(XML file)
    {
        this.file = file;
    }

    public void Execute()
    {
        //omn nom nom xml
    }
}

И main может выглядеть как

XML file = new XML("file.xml");
ICommand updateCommand = new UpdateCommand(file);
updateCommand.Execute();

Ответ 2 · рейтинг 1 · Mike Valenty

На высоком уровне я думаю об этом так:

Место хранения

  • Файловая система
  • База данных
  • объем памяти

С четкой абстракцией хранилища (AbcStore или AbcRepository) вы можете более легко добавить поведение, такое как кеширование или блокировка.

Формат сериализации

Почему вы выбрали XML, возможно, это изменится или данные будут доступны в разных форматах для разных клиентов. Я недостаточно знаю ваше приложение, чтобы понять, имеет ли это смысл.

Я мог бы назвать эту абстракцию AbcSerializer.

Бизнес-логика

Здесь вы манипулируете данными, и имена методов должны находиться в проблемной области, а не в области решения. Я имею в виду, что имя метода должно быть примерно таким, как changeAddress, а не updateChildNode

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы