使用接口构建器确实是一种糟糕的做法



我在一家新公司开始为ios开发。在这里,他们教我永远不要使用iterfacebuilder,说很难维护代码,而且它有一些局限性。

在netbeans中使用java应用程序的接口构建,我看到了很多"坏代码",但我没有看到它使用IB,此外,我在互联网上看到了很多IB代码,只有少数代码没有它。

那么,对于一个没有人是ios开发初学者的大公司来说,使用IB是一个糟糕的实践吗?

在这里,他们教我永远不要使用接口生成器,说维护代码很难,而且有一些限制。

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

毕竟,他们开始使用Interface Builder和Xcode及其所有古怪、有时奇怪/不合逻辑的功能(以及bug),但当他们需要开发一些不明显的东西时,他们甚至没有意识到有一种方法可以通过编程创建视图和视图控制器(是的,我在StackOverflow上看到过这个问题)。

因此,当被滥用(或者更确切地说,使用得太早)时,界面生成器和所有"方便"的功能会导致程序员学习不好的概念,并错过一些重要的实践和经验。

但是,如果你是一名资深开发人员,拥有所有必要的技能,并且你觉得只需使用一个简单的文本编辑器和Makefile就可以从头开始编写整个应用程序,那么你完全可以使用IB,如果你觉得这比编写代码更舒服,甚至可以鼓励你这样做。

综上所述:

使用接口生成器真的是一种糟糕的做法吗?

否。滥用它而不努力学习UI的编程方法是不好的做法。

Postscriptum:我在iOS开发方面有很多经验,但我仍然觉得界面生成器很不方便,而且不一致。我通常对所有事情都使用代码。但这似乎是我个人的喜好。然而,一个优点是,如果一个人通过代码创建所有内容,那么另一个无法访问这些苹果特定工具的程序员也可以为该项目做出贡献。在这一点上,"很难维持"的部分变成了现实。。。

例如,直到我没有足够的钱买Mac,我才用Linux开发iOS应用程序(是的,这实际上是可能的)。我不能使用IB和Xcode,但我已经做了大量的应用程序和调整(当然是针对越狱的iOS),这很好。

Postscriptum#2:避免使用IB的另一个原因可能是需要动态UI。如果您严重依赖动画、自定义UI元素等,则很难在Interface Builder中完成所有操作。去年夏天,我不得不重写一个应用程序的登录屏幕,老实说,如果我必须使用Interface Builder,我不知道我怎么能实现我们设计师的想法。UI/UX是如此的动态,它有很多改变的方式,所以对每个像素都有精细的控制是绝对必要的。这是代码比IB更擅长的事情。

我强烈反对IB是一种糟糕做法的观点。接口生成器与代码相比具有以下优势:

  • 在处理复杂(甚至是简单)的图形界面时,IB会将代码缩减为一小部分-例如,在IB中简单地创建一个按钮需要几秒钟,而在代码中,这会转化为几十行,尤其是当按钮被设计为时

  • 为支持多种分辨率和设备的使用自动resizing掩码是一件轻而易举的事-这一点很重要,因为苹果现在正在推动独立于分辨率的应用程序

  • 更改/调整视图的属性只需点击几次即可,而不是几行代码,尤其是在使用图像时

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

  • 很难确定图形问题的原因,因为它会隐藏在IB文件中,而不是代码中

绝对不是。Interface Builder是一种非常强大的快速创建UI的方法。特别是使用Storyboards,它可以让你用很少的代码制作功能性应用程序。

它"创建坏代码"的问题是垃圾,因为IB没有创建任何代码。它创建的文件本质上是XML文件,它们补充了您编写的代码。

我开发的大多数应用程序大多是在IB上启动的。

显然,你不能做应用程序的功能性工作。也就是说,你不能告诉一个按钮该做什么,但你可以把它指向你已经编写的函数,得到一个几乎没有代码的工作按钮。

iPad和iPhone上iPhoto中的大多数UI都是在界面生成器中编写的。

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

在我同意H2CO3的观点之前,与其一直使用捷径来实现目标,不如了解幕后的情况。这在大多数情况下都有效,我强烈反对H2CO3的地方是:

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

  • 如果明天有人要求你创建一个iOS应用程序,而你以前从未为iOS开发过,我真的怀疑你是否会在不使用XIB或Storyboards的情况下从头开始创建应用程序(顺便说一句,我讨厌)。

H2CO3提出的是一个乌托邦。。。在你真正了解下面发生了什么的地方,但因为你是一个"韭菜",你可以使用快捷方式,比如XIB。好吧,事情不是这样的,你迟早会做一些糟糕的事情来在第二天早上送东西。

从个人角度来看,我更喜欢使用XIB,而不是使用我面前的第一个第三方库。我认为这比手工制作界面更合理。我更喜欢理解代码,自己动手,而不是使用库来帮助我下载/上传东西。

关于结束这件事,我对提问者的建议是:

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

附言:作为一名资深开发人员,不仅仅是一个"功夫比你强"的人。。不止于此。

相关内容

最新更新