Я работаю над перемещением некоторых сложных сценариев из функций в классы. В функциональной версии я бы использовал такую строку
"{header-[cf][0][:12]}_Started: 11:30:21"
{????} _ - это идентифицирующая информация, здесь у меня есть элемент заголовка header- (что имеет значение для форматирования), он будет регистрировать как консоль, так и файл [cf] , не иметь начального отступа [0] , и дополнит следующую строку, чтобы обеспечить 12 символы перед: следующим за Начато [: 12] , поэтому 5 пробелов. У меня были функции для увеличения значения вкладки, изменения места назначения (консоль, файл или оба) и т. Д. c. Все они управляются сложными регулярными выражениями для извлечения идентифицирующей информации из начала строки. Теперь, когда я перехожу в классы, у меня есть
Enum PxLogType {
blankLine
header
milieuCondition
}
class Px_LogItem {
[PxLogType]$type
[bool]$logToConsole
[bool]$logToFile
[int]$indent
[char]$alignToSymbol
[int]$alignSymbolLocation
[string]$string
# Constructor
Px_LogItem ([PxLogType]$type, [bool]$logToConsole, [bool]$logToFile, [int]$indent, [string]$string) {
$this.type = $type
$this.logToConsole = $logToConsole
$this.logToFile = $logToFile
$this.indent = $indent
$this.string = $string
}
Px_LogItem ([PxLogType]$type, [bool]$logToConsole, [bool]$logToFile, [int]$indent, [char]$alignToSymbol, [int]$alignSymbolLocation, [string]$string) {
$this.type = $type
$this.logToConsole = $logToConsole
$this.logToFile = $logToFile
$this.indent = $indent
$this.alignToSymbol = $alignToSymbol
$this.alignSymbolLocation = $alignSymbolLocation
$this.string = $string
}
}
В конечном итоге у меня будет больше перечислений, метод для увеличения отступа табуляции и т. Д. c. Это работает, но
$logItem = [Px_LogItem]::New([PxLogType]::header, $true, $true, 0, ':', 12, "Started: 11:30:21")
не так читается на мой взгляд. Особенно два экземпляра $true
, которые заменяют [cf]
для определения цели для журнала. И в зависимости от того, где я go, я вижу несколько вариантов конструктора, которые начинают становиться грязными. По крайней мере, в моих глазах грязно, которые еще не настолько знакомы с тем, как конструкторы настолько ... конкретны c.
Итак, мне интересно, нахожусь ли я на правильном пути, и просто не знаком хватит пока с тем, как выглядит код на основе классов, или я не в курсе? Я полагаю, что мог бы сделать другое перечисление для цели журнала, с допустимыми значениями c, f & cf. Или даже есть версия, которая не принимает эти аргументы, и по умолчанию оба имеют значение true, чтобы упростить вещи. Это потребует цепочки методов для конструкторов, что может быть хорошей идеей, но сколько конструкторов считается порогом для этого изменения? Я понимаю, что все это довольно неопределенно c и в основном просто мнение, но я надеюсь, что достаточно c, чтобы некоторые люди могли оценить их мнение, поскольку я слишком невежествен, чтобы иметь действительное мнение.