当前位置: 首页 > 科技观察

iOS开发者的十大基本规则

时间:2023-03-13 04:55:46 科技观察

免责声明:此列表纯粹来自我的大脑。它是关于成为一名优秀的Swift开发人员的感觉。我有偏见。以下是我在准备课程和制作应用程序时阅读Swift文档和WWDC视频后的发现。1.压痕不够快。我见过很多开发人员写这样的代码,funcneverDoThis(){letfuglyCode=trueif(fuglyCode==true){print("Thisisatrocious")}}如果我看到上面的代码类型,我真的很难分辨.我认为他/她从未阅读过API指南/文档或任何人的Swift代码。来看看WWDC上的苹果工程师是怎么写的。//HowSwiftengineerswouldwritefuncswiftyWay(){letisLegit=trueifisLegit{print("Thisisfine")}}2.永远不要使用Try!,as!,String!unless%100sureifyou'vebeenaround,确保你理解其中的区别,asas!as?trytry!try?IntInt!Int?如果您不知道自己在做什么,并使用Xcode左侧的那些,您一定会看到“Unexpectedzerofound”消息。不要被动。动动你的屁股,明白他们的意思。特别是对于那些参加Udemy初学者课程的人(包括我自己),您需要弄清楚自己的课程。3.函数不超过20行昨天朋友让我去review他的代码。一个函数有50行。它覆盖了整个Xcode黑屏。我当时想,这狗屎哪儿也去不了。我告诉他,“我不想读你的代码,因为你的代码很烂”。我告诉他把它分解成碎片并模块化。真相很伤人,但他是我的朋友,我需要真实而清晰。没有废话试图取悦他。例如,不要写这样的东西,尽管下面的情况不太好。..把它分解成碎片。4、UI主线程、网络后台线程多重威胁(CPU完成的一组任务)的概念让人望而生畏。我不怪你。我没有计算机工程背景,但我还是不太明白。我写了两篇文章为什么你需要使用主线程进行UI更新和后台线程进行网络连接。所以,我会跳过那部分。5.不要让Swift文件超过200行我在第一次学习如何制作应用程序时犯了这个错误。我制作了一个包含多个UIViewController类和模型的超过800行的文件。这是我不会重复的事情。一旦入侵,就再也回不去了。当然,如果文件是JSON或基于内容的,它可能包含数千行。我不会详细解释所有这些概念,但我会告诉您可以学到什么,并使您的整个应用程序更加简洁。有几种方法可以从根本上减少行数并保持可读性。您可以使用UITableVIew和UICollectionView的面向协议编程来制作可重用的代码。如果您正在使用代表MassiveViewController的MVC,您可能需要了解MVVM的工作原理。6.永远不要打字。您是否意识到我们可以在Xcode中自动完成许多属性的原因是因为枚举?这似乎很明显,但对于初学者来说可能并非如此。在编程中你最不想做的事情就是硬核输入,而不是选择。例如,当您创建UIAlertViewStyle时,UIKit工程师会创建publicenumUIAlertViewStyle:Int{case`default`casesecureTextInputcaseplainTextInputcaseloginAndPasswordInput}您能想象输入每个案例吗?我不能,因为我没有考虑它,因为它是必要的。不要为自己硬编码,而是为你队友的白发。7.姓名。具有描述性。风格指南根据SwiftAPI指南,开发人员应该遵循一些标准。A。约定>独特性每种编程语言都有自己的特点和风格。虽然主观,但可以通过阅读开源项目中编写的Swift文档和Swift文件来找到约定。再次强调,我强烈建议您看看用Swifty方式编写是什么感觉。我将在下面为您提供资源,而不是给您示例。b.表现力>令人印象深刻有些人喜欢扭曲事物,让自己感觉优越,因为其他人无法阅读。这是无稽之谈。没有人应该这样做。这都是关于彼此有效沟通的。是的,代码是人类与计算机交流的一种方式。但是,它也存在于我们、开发人员和极客之间。请不要成为那个试图用莎士比亚的话来打动人的傲慢自大的人。不需要。C。清晰>简洁Swift的开发者要求我们把名字说清楚,这样当我们三周后回来时,我们就没事了。然而,没有非黑即白。这是使用描述性名称和减少总行数的平衡。“简洁本身并不是一个值得追求的目标。简洁的代码是使用上下文线索的结果”——DougGregor,Swift工程师//Toobrief&Lackofcontextleta="A"letb="B"如果我??要阅读上面的代码,我会一直对a和b究竟是什么感到困惑。所以,我必须一直找到他们。为什么我们不能写得更详细些,//HowIwoulddoitletcapLetterA="A"letcapLetterB="B"8.使用GuardGuard语句不仅可以用来扩展optoanls,还可以代替if-else语句,用break或advance使用返回退出功能。它允许任何人在不滚动查找其他块的情况下识别如果不满足条件会发生什么。让我们看一个真实世界的例子。letname="Bobby"funccheckName(){//EarlyCheckguardname=="Bob"else{print("Youain'tBob")return}//我可以做任何我想做的事情而不会看到其他块。//如此自由//你甚至不需要读这个//你为什么要读这个//现在,你可以离开了。重要的我就不说了//Inthisblockofcode//Lol...youstillhere?print("YouGood,bro")}如果你不明白提前打开选项和退出是什么意思,请查看资源以下。9.如果可以,不要使用NS我不在ObjectiveC中编写代码,所以我在精神上和身体上都尽量避免使用它。除非你正在与Objective-CAPI交互,否则请远离使用NS,即使Swift自动将一些Objective-C类型转换为Swift类型,并将一些Swift类型转换为Objective-C类型。Swift确实受到了Objective-C和许多其他语言的启发,但它是一种自己的语言。我不确定转换有多慢,但建议Swift开发人员尽可能避免使用它。由于Swift提供了自己的本地库和API,您可以考虑其他选择。“历史记录:如果你想知道为什么你遇到的许多类都有NS前缀,那是因为Cocoa和CocoaTouch的历史。Cocoa开始使用收集的框架为NeXTStep操作系统构建应用程序。当Apple在1996年购买NeXT时,大部分NeXTStep都被烘焙到OSX中,包括现有的类名。CocoaTouch被引入作为Cocoa的iOS平台;Cocoa和CocoaTouch都提供了一些类,尽管每个平台都有许多独特的类。两个字母NS和UI(用于iOS上的用户界面元素)等前缀保留供Apple使用”。-Apple10.不要依赖Segments当他们的故事板看起来像蜘蛛网时,初学者往往会创建太多Segues。一旦超过某个阈值,它就会变得难以管理,并且很难跟踪每个视图控制器。所以使用Delegate/NSNotification来发送数据。使用多个故事板而不是一个。如果您熟悉Delegate,您可以开始使用RxSwift或ReactiveCocoa来传递数据或发送通知,只需几行代码。