iOS开发人员的十大基本规则

序言

免责声明:这份清单纯粹来自我的大脑。这是关于成为一名好的Swift开发者的感觉。我有偏见。这是我在准备课程和制作应用程序时阅读了Swift文档和WWDC视频后发现的。
1.缩进,不够快捷。
我看到过很多开发人员编写如下代码,

func neverDoThis()
{
  let fuglyCode = true
  if (fuglyCode == true)
  {
    print("This is atrocious")
  }
}

如果我看到上面的代码类型,我真的很难判断。我以为他/她从来没有阅读过API指南/文档或任何人的Swift代码。我们来看看WWDC的苹果工程师如何撰写。


// How Swift engineers would write
func swiftyWay() {
  let isLegit = true
  if isLegit {
    print("This is fine")
  }
}

2.永不使用Try !, as !, String!除非%100确定
如果你一直在附近,确保你了解它们之间的差异,
as as! as?
try try! try?
Int Int! Int?

如果你不知道自己在做什么,并且使用Xcode左侧的那些,你一定会看到“发现意外的零”消息。不要被动。移动你的屁股并理解他们的意思。特别是对于那些参加Udemy初级课程(包括我自己)的人,你需要弄清楚你自己的。
3.不要超过20行功能
我的朋友昨天要我回顾他的代码。一个函数有50行。它涵盖了整个Xcode黑屏。我就像,这个狗屎不会去任何地方。我告诉他,“我不想读你的代码,因为你的代码很糟糕”。我告诉他把它分解成碎片并模块化。真相伤害,但他是我的朋友,我需要真实而清楚。没有废话试图取悦他。
例如,不要写这样的东西,尽管下面的内容不太。。。

image.png
把它分解成几块。
image.png

4. UI主线程,网络后台线程
多重威胁(由CPU完成的一组任务)的概念令人望而生畏。我不怪你。我没有计算机工程背景,但我仍然不太了解。
5.不要使Swift文件超过200行
我第一次学习如何制作应用程序时犯了这个错误。我制作了一个包含多个UIViewController类和模型的超过800行的文件。这是我不会重复的。一旦你入侵,你永远不会回去。当然,如果文件是JSON或基于内容的文件,它可能包含数以千计的行。

我不会详细解释所有这些概念,但我会告诉你,你可以学习什么,并使你的整个应用程序更加干净。

有几个方法可以从根本上减少行数并仍然可读。您可以使用UITableVIew和UICollectionView使用面向协议的编程来制作可重用的代码。如果您使用的是代表Massive View Controller的MVC,则可能需要了解MVVM的工作原理。

6.永远不要输入任何东西。
你是否意识到我们可以在Xcode中自动完成许多属性的原因是由于Enums
?这看起来很明显,但对初学者来说可能并非如此。

你想在编程中做的最后一件事是硬核打字,而不是挑选。例如,当您创建UIAlertViewStyle时,UIKit工程师创建,

public enum UIAlertViewStyle : Int {
 case `default`
 case secureTextInput
 case plainTextInput
 case loginAndPasswordInput
}

你能想象打字每个案件吗?我不能,因为我不考虑它,因为这是必须的。不要为自己编写硬编码,而是为了你队友的灰白头发。

7.姓名。具有描述性。造型指南
根据Swift API指南,开发人员应该遵循一些标准。

  • 公约>独特性
    每种编程语言都有自己的特点和风格。虽然是主观的,但是可以通过阅读在开源项目中编写的Swift文档和Swift文件来找到约定。同样,我强烈建议你看看用Swifty的方式写什么感觉。相反给你举例,我会在下面给你提供资源。

  • 表现力>令人印象深刻
    有些帅哥喜欢把东西扭曲,让他们感到优越感,因为别人看不懂。这是废话。没有人应该这样做。这完全是关于彼此之间的有效沟通。是的,代码是人类与计算机交流的一种方式。但是,它也在我们之间,开发者和极客之间。请不要成为那个试图用莎士比亚的话来留下印象的傲慢家伙。没必要。

  • 清晰度>简洁
    Swift的开发者要求我们清楚地说出名字,以便在三周后回来时,我们很好。但是,没有黑色和白色。这是使用描述性名称和减少总体行数的平衡。

“简洁本身不是一个有价值的目标。简洁的代码是使用上下文线索的结果“ -——Doug Gregor,Swift Engineer

// Too brief & Lack of context
let a = "A"
let b = "B"

如果我要阅读上面的代码,我会困惑到底是什么a和b始终。所以,我必须一直找到它们。为什么我们不能通过写作来更具描述性,

// How I would do it
let capLetterA = "A"
let capLetterB = "B"

8.使用Guard Guard语句不仅可用于展开optioanls,还可用于替换if-else语句,并使用break或using return提前退出函数。它允许任何人识别如果在没有滚动查找其他块的情况下没有满足条件会发生什么。
我们来看一个的例子。

let name = "Bobby"
func checkName() {
  // Early Check
  guard name == "Bob" else {
  print("You ain't Bob")
  return
 }

 // I can do anything I want without seeing the else block.
 // So much freedom
 // You don't even need to read this
 // Why are you even reading this
 // Now, you may leave. I'm not going to say anything important
 // In this block of code

 // Lol... you still here?

 print("You Good, bro")
}

如果您不明白打开option和提前退出意味着什么,请检查下面的资源。
9.如果可以的话,不要使用NS
我没有在Objective C中编写代码,所以我尽量避免它在精神上和身体上都能达到。除非你正在与Objective-C API交互,否则即使Swift自动将一些Objective-C类型转换为Swift类型,并将一些Swift类型转换为Objective-C类型,也远离使用NS。

Swift的确受到Objective-C和其他许多语言的启发,但它是一门独立的语言。我不确定转换速度有多慢,但建议Swift开发人员尽可能避免。由于Swift提供了自己的本地库和API,因此您可以查看替代方案。
image.png

“历史笔记:如果你想知道为什么你遇到的很多类都有NS前缀,那是因为可可和Cocoa Touch的历史。可可开始使用收集的框架来构建NeXTStep操作系统的应用程序。当苹果在1996年购买NeXT时,大部分NeXTStep都被纳入到OS X中,包括现有的类名称。 Cocoa Touch作为Cocoa的iOS平台引入; Cocoa和Cocoa Touch都提供了一些类,尽管每个平台都有很多独特的类。像NS和UI这样的双字母前缀(用于iOS上的用户界面元素)保留给Apple使用“。 ——Apple

10.不要依赖分段 当故事板看起来像蜘蛛网时,初学者往往会制造太多的Segues。一旦超出了某个阈值,它就变得难以管理,很难跟踪每个视图控制器。因此,使用Delegate / NSNotification发送数据。使用多个故事板而不是一个。如果您对Delegate感到满意,则可以开始使用RxSwift或ReactiveCocoa传递数据或仅通过几行代码发送通知。

最后

有一句话叫做三人行必有我师,其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要。这是我的iOS技术交流群551346706,欢迎加入一起交流共同进步 ,小编也可以分享iOS面经考点的答案给你

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 1.缩进,不够快捷。 我看到过很多开发人员编写如下代码, funcneverDoThis(){letfuglyCo...
    暮年古稀ZC阅读 949评论 0 0
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,598评论 1 180
  • 因为脖子上一个长了十多年的肉疙瘩疼痛难忍,要去县里最好的医院做检查。 因为这二个月, 你前后去大医院做了两次检查,...
    阳光小青阅读 399评论 4 4
  • 你看… 又是一年四季轮回 抽芽 绿叶 渐黄 黄叶 落叶归根… 就这样他经历了一年又一年 但今年的他格外不一样 他比...
    疏微阅读 234评论 2 2
  • 那些发生在08年的事情,像是褪色的旧电影,曾经相片里清瘦的男孩和悲伤的女孩,没人记得他们什么时候走的,也没人会问,...
    燕小七阅读 341评论 0 0