【问题标题】:Variable Naming Convention Thoughts for Swift 3Swift 3 的变量命名约定思想
【发布时间】:2016-09-29 16:43:01
【问题描述】:

关于变量名: 假设有一些类似于以下的代码:

class AgentModel
    var name: String?
    var office: String?
    var phone: String?

命名约定是否将这些命名为

class AgentModel
    var nameString: String?
    var officeString: String?
    var phoneString: String?

我无法确定 Apple 是否明确规定了是否首选一种做法的指导方针,但除非有必要,否则总是遵循后者似乎不是 Swift-y 的。


关于对象名称:同样,对象是否应该被命名

AgentModel

还是应该这样命名?

Agent

乍一看,我认为这将遵循相同的约定。我是否正确,或者这会是规则的例外吗?


人们对此有想法和/或参考吗? 谢谢!

【问题讨论】:

  • 从 Swift 3 开始,你绝对应该从 var name 中省略 String
  • 现在一个好的规则是“不要说出已经被告知的事情”。我们知道它是一个字符串,因为它是作为字符串输入的:无需通过将其添加到名称中来再次告诉它。 :)
  • 来自swift.org/documentation/api-design-guidelines“根据它们的角色,而不是它们的类型约束来命名变量、参数和关联类型。”
  • 如果您认为您的问题已得到解答,请对答案进行投票并接受其中一个。
  • 我希望有更多关于“Agent”与“AgentModel”的讨论,但我刚刚选择的答案触及了一切的核心。

标签: swift naming-conventions swift3 naming


【解决方案1】:

swift.org 状态下的API Design Guidelines(已添加重点):

省略不必要的词。名称中的每一个词都应该在使用现场传达显着的信息。

可能需要更多的词来阐明意图或消除歧义,但那些与读者已经掌握的信息多余的词应该省略。特别是,省略仅重复类型信息的单词。

还有:

根据其角色而非类型约束来命名变量、参数和关联类型。

所以

var nameString: String?
var officeString: String?
var phoneString: String?

显然推荐。

var name: String?
var office: String?
var phone: String?

很好但可能会进一步改进,例如使用phoneNumber 而不是phone

【讨论】:

    【解决方案2】:

    没有。

    如果我需要知道类型并且从上下文中不明显,我只需选择单击它,Xcode 就会给我它的声明,包括它的访问说明符、类型和可变性。

    【讨论】:

    • 对象名称本身的“Agent”与“AgentModel”怎么样——尤其是在没有另一个 Agent 对象与之冲突的情况下?
    • 我个人认为我会选择Agent,但我真的没有理由这样做。我认为Model 部分很容易推断,但无论哪种方式都应该没问题。
    • @EndersJeesh 哪个更具可读性:Agent.phone = 123AgentModel.phoneString = 123?越易读越好!
    【解决方案3】:
    class AgentModel {
        var name: String?
        var office: String?
        var phone: String?
    }
    
    let agent = AgentModel()
    agent.name = "EndersJeesh"
    agent.office = "London Port"
    agent.phone = "180059345345"
    

    这将使生活变得轻松。由于类型已在变量声明中指定“var name: String?”再次在变量名中添加类型是没有意义的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-11
      • 2014-08-06
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      相关资源
      最近更新 更多