更好地编码的简单技巧(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)
}