Узнайте, как создавать стили LaTeX? [закрыто]

22
задан chaindriver 18 August 2010 в 11:36
поделиться

3 ответа

  1. Не раскрывайте класс (например, сделайте его закрытым __ MyClass или очевидно, что вы не хотите, чтобы он использовался напрямую _MyClass ). Таким образом, он может быть создан только через фабричную функцию.
  2. Возможно, вам следует пересмотреть использование аргументов ключевого слова и наследования. Похоже, вы можете упустить их из виду, что обычно снижает вашу зависимость от сложных фабрик (честно говоря, фабрики мне нужны нечасто).
  3. В Python вы не можете легко защититься от раскрытия реализации, это противоречит Дзен Python . (То же самое и на любом языке: целеустремленный человек может в конце концов получить то, что хочет). В лучшем случае вы должны попытаться убедиться, что пользователь вашего кода случайно не сделает что-то неправильное, но никогда не предполагайте, что знаете, чего конечный пользователь может решить достичь с помощью вашего кода. Не делайте его запутанным и трудным для работы.
12
ответ дан 29 November 2019 в 04:40
поделиться

Будьте питонистами. Не усложняйте код чрезмерно с помощью решений на «корпоративном» языке (например, Java), которые добавляют ненужные уровни абстракции.

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

24
ответ дан 29 November 2019 в 04:40
поделиться

Есть ли способ предотвратить непосредственное создание реальных конкретных классов?

Почему? Ваши программисты - злые социопаты, отказывающиеся следовать правилам? Если вы предоставите фабрику - а фабрика делает то, что нужно людям, - тогда они будут использовать фабрику.

Ничего нельзя «предотвратить». Помните. Это Python - у них есть исходники.

следует ли мне использовать фабрику для клиента для создания окна, на всякий случай, если я могу добавить больше типов Windows в будущем?

Мех. Ни хорошо, ни плохо. Управление всеми деталями иерархии классов и фабрики может стать обременительным.

Добавить фабрику несложно. Это Python - у вас всегда есть весь исходный код - вы можете использовать grep , чтобы найти конструктор класса и заменить его фабрикой, когда вам нужно.

Поскольку вы можете использовать grep для поиска и исправления своих ошибок, вам не нужно заранее планировать такие вещи, как в Java или C ++.

Я вижу много руководств, в которых это делается, например, VehicleFactory, но я считаю их слишком длинными и в некотором роде также раскрывает реализацию.

"Слишком долго"? Он используется так редко, что не имеет особого значения. Используйте длинные имена - это поможет другим людям понять, что вы делаете. Это не Code Golf, где выигрывает наименьшее количество нажатий клавиш.

"обнажает реализацию"? Во-первых, он ничего не раскрывает. Во-вторых, это Python - у вас всегда есть исходный код - все уже открыто.

Перестаньте так много думать о профилактике и конфиденциальности. Это бесполезно.

6
ответ дан 29 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: