更好地编码的简单技巧(Swift iOS)

大家好,今天我决定写一个关于我认为非常重要的“提高编码技巧”的话题。

我认为这很重要,因为Swift为我们提供了许多有趣的工具,以避免在创建应用过程中出错,但是我们大多数人(一开始)通常都不使用它们。 并相信我,他们将节省很多问题。

请别再哭了。

避免使用字符串-使用枚举

如果您使用其他语言,则可能知道什么是常量,如果您不这样做:

在计算机编程中,常数是程序在正常执行期间无法更改的值

枚举是保持所有常量井井有条的方式,例如:

enum Countries:String { 
case usa
case colombia
case mexico
case germany
}

现在,我请您考虑如何在oder中比较字符串变量以显示正确的标志。

  let country =“哥伦比亚” 
 如果国家==“哥伦比亚” { 
}
如果国家==“哥伦比亚” {
}
如果国家==“德国” {
}

此过程可能会在您的应用程序中产生很多错误,因为通常开发人员在输入时可能会犯错。

列举救援

  let country =“哥伦比亚” 
 如果国家== Countries.colombia.rawValue { 
}

通过上面的代码,您将非常确定自己正确地输入了条件。

创建面向可重用性的类

尽管这可能是有史以来最明显的建议,但可以再说一遍: 可重用性

没有人喜欢长代码文件,它们很无聊,难以阅读,实际上,当所有文件都弄乱了时,在文件中工作很烦人。

如果您有这样的事情:

 覆盖func viewDidLoad(){ 
super.viewDidLoad()
 让shadowPath = UIBezierPath(rect:self.view.bounds) 
让borderView = UIView()
borderView.frame = self.bounds
borderView.layer.masksToBounds = true
borderView.layer.shadowColor =颜色
borderView.layer.shadowOpacity = shadowOpacity
borderView.layer.shadowOffset = shadowOffset
borderView.layer.shadowRadius = shadowRadius
borderView.layer.shadowPath = shadowPath.cgPath
self.addSubview(borderView)
  } 

可能您可以为以下内容进行更改:

 覆盖func viewDidLoad(){ 
super.viewDidLoad()
  createBorderView() 
  } 
  func createBorderView(){ 
 让shadowPath = UIBezierPath(rect:self.view.bounds) 
让borderView = UIView()
self.createBordersToAView(//参数在这里)
self.addSubview(borderView)
  } 
  func createBordersToAView(color:CGColor,shadowOpacity:Float,shadowOffset:CGSize,shadowRadius:CGFloat){ 
  borderView.frame = self.bounds 
borderView.layer.masksToBounds = true
borderView.layer.shadowColor =颜色
borderView.layer.shadowOpacity = shadowOpacity
borderView.layer.shadowOffset = shadowOffset
borderView.layer.shadowRadius = shadowRadius
borderView.layer.shadowPath = shadowPath.cgPath

}

使用扩展

扩展可能是Swift中可重用性最重要的功能。

我将通过相同的示例向您展示如何节省时间并重用所有代码:

您可以将此代码放在您的项目中(而不是在类中)

 扩展UIView { 
public func setShadowsContainer(color:CGColor,shadowOpacity:Float,shadowOffset:CGSize,shadowRadius:CGFloat){
 让shadowPath = UIBezierPath(rect:self.bounds) 
让borderView = UIView()
borderView.frame = self.bounds
borderView.layer.masksToBounds = true
borderView.layer.shadowColor =颜色
borderView.layer.shadowOpacity = shadowOpacity
borderView.layer.shadowOffset = shadowOffset
borderView.layer.shadowRadius = shadowRadius
borderView.layer.shadowPath = shadowPath.cgPath
self.addSubview(borderView)
}
}

最后,您的代码将如下所示:

 覆盖func viewDidLoad(){ 
super.viewDidLoad()
  createBorderView() 
  } 
  func createBorderView(){ 
 让shadowPath = UIBezierPath(rect:self.view.bounds) 
让borderView = UIView()
borderView.setShadowsContainer(//这里的参数)
self.addSubview(borderView)
  }