使用界面构建器真的是一个不好的做法?

时间:2012-12-18 16:05:55

标签: ios interface-builder

我开始在一家新公司开发ios。 在这里,他们教我永远不要使用iterface-builder,说它难以维护代码,并且有一些限制。

在netbeans中使用java应用程序的界面构建我看到很多"错误的代码"但我没有看到它使用IB,除了我在互联网上看到很多IB代码,只有少数代码没有它。

那么对于ios开发中没有人是初学者来说,使用IB是不是很糟糕?

4 个答案:

答案 0 :(得分:17)

(我提前提一下,我强烈反对使用Interface Builder,原因有很多,我会解释)

  

在这里,他们教我永远不要使用Interface Builder,说它很难维护代码,并且有一些限制。

这只是部分正确。我不喜欢Interface Builder和Xcode的主要原因是很多初学者程序员认为这是开发iOS / OS X应用程序的唯一方法。他们从未听说过gccclang,他们不知道编译器和链接器错误消息的含义,他们不能使用make,他们不知道什么是Objective-C语言,Cocoa(Touch)API,IDE和编译器之间的区别是。

毕竟,他们开始使用Interface Builder和Xcode的所有古怪和有时奇怪/不合逻辑的功能(以及错误),但是当他们需要开发非显而易见的东西时,他们不会甚至意识到有一种方法,例如,以编程方式创建视图和视图控制器(是的,我在StackOverflow上看到了这个问题)。

因此,当被滥用(或者更确切地说,过早使用)时,Interface Builder和所有“方便”的功能会导致程序员学习不良概念并错过一些重要的实践和经验。

但是,如果你是一名高级开发人员,谁拥有所有必要的技能,你觉得你可以从头开始编写一个完整的应用程序,只使用一个简单的文本编辑器和一个Makefile,然后你无论如何都被允许使用IB,如果你觉得比锤击代码更舒服,甚至鼓励你这样做。

所以,总结一下:

  

使用界面构建器实际上是一种不好的做法吗?

没有。相反,滥用它而不是努力学习UI的程序化方法是不好的做法。

Post scriptum:我在iOS开发方面有很多经验,但我仍然发现Interface Builder相当不方便且不一致。我通常使用代码来做所有事情。但这似乎是我个人的偏好。但是,一个优点是,如果一个人通过代码创建所有内容,那么另一个无法访问这些Apple特定工具的程序员也能够为该项目做出贡献。这是一个“难以维护”的部分实现了......

例如,在我没有足够的钱用于Mac之前,我使用Linux开发iOS应用程序(yes, that is actually possible)。我无法使用IB和Xcode,但我已经完成了大量的应用程序和调整(当然是越狱的iOS),这很好。

后脚本#2:避免使用IB的另一个原因可能是需要动态UI。如果您非常依赖动画,自定义UI元素等,则很难在Interface Builder中完成所有操作。去年夏天,我不得不重写一个应用程序的登录界面,老实说,如果我不得不使用Interface Builder,我不知道如何实现我们设计师的想法。 UI / UX是如此动态,它有很多方法可以改变,因此绝对有必要对每个像素进行精细控制。这就是代码比IB更好的东西。

答案 1 :(得分:7)

我强烈不同意IB是一种不好的做法。 Interface Builder与代码相比具有以下优势:

  • 使用复杂(甚至简单)的图形界面时, IB将代码缩减到仅仅 - 例如,只需在IB中创建按钮需要几秒钟,而在代码中,转换为几十行,特别是如果要设置按钮样式

  • 使用自动调整功能掩码支持多种分辨率和设备轻而易举 - 这一点非常重要,因为Apple正在推动与分辨率无关的应用

  • 更改/调整视图属性只需点击几下而不是代码行,尤其是在处理图片时

然而,有一个缺点(我想到):

  • 它可以难以查明可能导致图形问题的原因,因为它将隐藏在IB文件中而不是隐藏在代码中

答案 2 :(得分:4)

绝对不是。 Interface Builder是一种非常强大的创建UI的方法。特别是使用Storyboard,它允许您使用非常少的代码制作功能性应用程序。

“创建错误代码”的问题是垃圾,因为IB不会创建任何代码。它创建的文件本质上是XML文件,可以补充您编写的代码。

我开发的大多数应用程序主要是在IB上开始的。

显然,你不能做你的应用程序的FUNCTIONAL东西。即你不能告诉按钮到底该做什么。但是你可以将它指向你编写的函数并获得几乎没有代码的工作按钮。

iPad和iPhone上的iPhoto中的大多数UI都是用Interface Builder编写的。

答案 3 :(得分:4)

已经说了很多,但我仍然会为这次讨论付出2美分......

在某种程度上我同意H2CO3之前,最好先了解一下是什么,而不是继续使用快捷方式来实现某些目标。大部分时间都是这样,事情,而且我强烈不同意H2CO3的意思如下:

  • 大多数使用技术的人(C#,Java,HTML,iOS等)都使用它,因为他们公司需要他们使用它,因为其他人实际上会付钱给你工作那。而不是因为你实际上在半夜醒来,突然有了学习C的冲动。

  • 如果有人明天要求您创建一个iOS应用程序并且之前从未开发过iOS,我真的怀疑您是否会在不使用XIB或故事板的情况下从头开始创建应用程序(我讨厌btw)。

H2CO3提出的是一个乌托邦......你真正了解下面发生了什么,但是因为你是一个“leet”,你可以使用快捷方式,比如XIB。嗯,事情不会这样,迟早你将不得不做一些糟糕的事情,第二天早上送东西。

我更喜欢,这是个人观点,使用XIB,而不是使用我面前的第一个第三方库。而且我认为这比手工制作界面更合理。我更喜欢理解代码,并且自己做,而不是使用例如库来帮助我下载/上传内容。

为了解决这个问题,我对提出这个问题的人的建议是:

尝试理解为什么事情按照他们的方式完成。最重要的是,努力成为您面对的每个新项目中更好的程序员。如果出现新的东西(新的iOS版本),花一两天时间看看有什么新内容,以及你可以使用什么。 XIB非常适合使用,但是花一些时间手工创建UIView's,这样你就可以看到他们给你的所有灵活性。最重要的是,逃离故事板(^^)

P.S:一位高级开发人员,不仅仅是一个拥有“比你更好的功夫”的人......不仅如此。

相关问题