Как разработать программу со многими параметрами конфигурации?

позволяет сказать, что у меня есть программа, которая имеет большое количество вариантов конфигурации. Пользователь может указать их в файле конфигурации. Моя программа может разбирать этот файл конфигурации, но как он должен внутренне хранить и пройти вокруг вариантов?

В моем случае программное обеспечение используется для выполнения научного моделирования. Существует около 200 вариантов, большинство из которых имеют Sane по умолчанию. Как правило, пользователь должен указать дюжину или около того. Сложность, которым я сталкиваюсь - это то, как разработать мой внутренний код. Многие из объектов, которые необходимо построить, зависят от многих вариантов конфигурации. Например, объект может понадобиться несколько путей (для того, где будут храниться данные), некоторые варианты, которые необходимо передавать в алгоритмы, что объект будет звонить, и некоторые варианты, которые используются непосредственно на самом объекте.

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

Один из способов предотвратить, чтобы боль состоит в том, чтобы иметь глобальный объект конфигурации, который можно свободно использовать в любом месте кода. Я не особенно люблю этот подход, поскольку он приводит к функциям и классам, которые не принимают какой-либо (или только один) аргумент, и для читателя не очевидно, с какими данными функция / класс сделки с. Это также предотвращает повторное использование кода, так как весь код зависит от объекта гиганта конфигурации.

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

Вот пример того, что я имею в виду для параметра конфигурации, прошедший стиль:

class A:
    def __init__(self, opt_a, opt_b,  ..., opt_z):
        self.opt_a = opt_a
        self.opt_b = opt_b
        ...
        self.opt_z = opt_z

    def foo(self, arg):
        algo(arg, opt_a, opt_e)

Вот пример глобального стиля конфигурации:

class A:
    def __init__(self, config):
        self.config = config

    def foo(self, arg):
        algo(arg, config)

Примеры находятся в Python, но мой вопрос обозначает любой аналогичный программирующий Langauge.

-121--1048601- Декодирование строки октета ASN.1 DER OCTET с OpenSSL с использованием API OpenSSL я извлекли пользовательское расширение от сертификата X.509V3 с: X509_Extionsion * Ex = X509_get_ext (x509, 4); Объект X509_Extension содержит значение (ex-> значение), которое составляет ...

, используя API OpenSSL, я извлек пользовательское расширение от сертификата X.509V3 с:

X509_EXTENSION* ex = X509_get_ext(x509, 4);

Объектом X509_Extension содержит значение (EX -> Значение) Это октетная строка ASN.1. Строка OCTET содержит строку UTF-8 DER Conded. Я пытаюсь декодировать октетную строку, чтобы получить простую строку UTF-8.

Я пробовал несколько вещей, таких как:

ASN1_STRING_to_UTF8(&buf, ex->value);

и

M_ASN1_OCTET_STRING_print(bio, ex->value);
int len = BIO_read(bio, buf, buf_size);
buf[len] = '\0';

Они оба дают мне строку под кодировкой DER. Как получить простую строку UTF-8?

8
задан Roger Dahl 7 September 2011 в 06:02
поделиться