При использовании статических свойств и методов типа из методов экземпляра типа я часто повторяю имя типа.
, например
class Foo
{
// Type properties, methods
static let kBrandColor = UIColor.red
static let kMeaning = 42
static func makeThing() -> Thing { ... }
// Instance method
func printStuff()
{
print("Brand Color is: \(Foo.kBrandColor)")
print("The meaning of life is: \(Foo.kMeaning)")
let thing = Foo.makeThing()
print("Thing is \(thing)"
}
...
}
Эти повторяющиеся ссылки на "Foo" могут (и часто делают) приводить к ошибкам при копировании, рефакторинге. Очень легко забыть изменить «Foo», и код все равно будет компилироваться.
Итак, я использовал такой шаблон:
class Foo
{
fileprivate typealias _ThisClass = Foo
// Type properties, methods
static let kBrandColor = UIColor.red
static let kMeaning = 42
static func makeThing() -> Thing { ... }
// Instance method
func printStuff()
{
print("Brand Color is: \(_ThisClass.kBrandColor)")
print("The meaning of life is: \(_ThisClass.kMeaning)")
let thing = _ThisClass.makeThing()
print("Thing is \(thing)"
}
...
}
Этот подход обладает преимуществом некоторой безопасности при копировании и вставке, но за счет небольшого количества стандартного шаблона.
Есть ли лучшее, более чистое решение этой проблемы? (Я пытался выполнить поиск SO, но правильно подобрать условия поиска для такой проблемы).