将相关的属性集包装到自己的结构/类中是一种好习惯吗?

时间:2018-02-05 03:55:24

标签: swift data-structures

在Swift中编写User对象,尽管我的问题与任何强类型语言有关。用户可以拥有一堆链接(FacebookProfile,InstagramProfile等)。关于这一点的一些问题。

  1. 将链接包装在自己的对象中是一种好习惯吗?
  2.     struct User {
           var firstName: string
           var lastName: string
           var email: string
           var links: Links
        }
    
        struct Links {
           var facebook: string
           var instagram: string
           var twitter: string 
        }
    

    或者他们应该松散吗?我从技术上讲都知道这两种方法都很好,但是想知道是否有推荐的方法 - 特别是为了便于阅读。

    struct User { 
       var firstName: string
       var lastName: string
       var email: string
       var facebookLink: string
       var twitterLink: string
       var instagramLink: string
    }
    
    1. 在这样的场景中,链接应该是一个集合/列表吗?我认为它不应该是一个列表,因为有可用的固定数量的链接选项,而不是一个增长的数字。我的想法是对的吗?

    2. 将我的网络方法放在User对象中是不错的做法,比如getUsers,getUser,updateUser?

    3. 我知道这些可能是主观的,但我试图了解围绕类似情况的最佳做法是什么。非常感谢任何指针。

1 个答案:

答案 0 :(得分:0)

答案非常主观,取决于struct User的调用网站/用途

我的个人偏好:

  1. 不要过分担心User被分隔为Links。现在将它保持为一个整体结构。如果你认为有必要打破它,你可以看看不同的选择。

  2. 如果它是一组固定类型的链接,您甚至可以查看带有关联值的枚举。现在我只是将它们松散地放在URL?

  3. 是否会通过解析数据创建User的实例?如果是这样,我宁愿将它保持为我可以传递的值(结构)。我希望将网络服务分开,以便同时获取/更新一组User个对象。

  4. 注意:

    • 我觉得理解用户
    • 的目的是有意义的
    • 如何解析User? (Codable /用词典初始化)?
    • 逐步建立事物,不要过度工程,如果你认为有必要这样做,否则等到你认为需要它。