Tag: 命名

Swift中的函数命名

在本文中,我们将面临一个问题,即编写函数时应始终问自己: 我应该如何命名这个功能? 尽管这个问题看起来很简单,但正确回答它却决定了我们作为软件开发人员的职业生涯中至关重要的方面。 正如我们将看到的,它使我们的代码库更清洁,更易于使用。 如果要使用第三方库中的函数,那么可以说创建了精美标签,您会发现以下两个选项: // 一种 静态函数makeLabel(withTitle标题:String)-> FancyLabel // B 静态函数configure(_ text:String)-> FancyLabel 您会更喜欢哪一个? A还是B? 如果您仍在犹豫,我会给您一个线索:常识也使我想到了选项A。 那么为什么选择A? 首先,让我们分析一下为什么B不那么好:选项B不能告诉我们我们到底在配置什么。 它是否存在? 它会创建一个新的吗? 它会返回新事物吗? 它也没有告诉我们它期望的String的含义是什么。 我们可以事先告诉我们的是,它接收一个String并返回一个FancyLabel ,但我们FancyLabel知道它的作用。 存在歧义和缺乏信息,这是我们应该避免的事情。 另一方面,选项A 对于这三件事完全是明确的 : 工作需要什么 -标题 它的作用 *- 使其成为标签 结果如何 – 创建的标签 *我们关心它做什么 (或应该做什么),而不是它如何做那件事。 我们不在乎函数的内部工作原理。 封装就是这样工作的。 仅需清楚这三点, 就可以很自然地使用此函数,因为这样我们就可以毫无误解地知道函数的作用。 就这么简单。 当我们看一下这些函数的调用方式时,将会更加清楚: let labelA = FancyLabel.makeLabel(withTitle:“ Hello world”)// clearlet labelB = FancyLabel.configure(“ […]

类别方法命名的最佳做法

每个人都有一个原因,那是我们所生活的世界中最糟糕的部分。 遗憾的是,我们在iOS 11上遇到了一个与键盘框架有关的怪异问题,仅在iOS11上才发生。 有时,当文本字段变得集中时,键盘会稍微向上移动一点,如下图所示。 在键盘相关通知的信息字典中,我们可以获得键盘的框架。 通过在通知UIKeyboardWillShowNotification的事件处理程序中检查此信息,我们可以发现键盘的高度不正确。 – (void)keyboardWillShow:(NSNotification *)notification { NSDictionary *info = [notification userInfo]; NSString *curveValue = [info objectForKey:UIKeyboardAnimationCurveUserInfoKey]; CGRect rect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; NSLog(@”keyboard frame: %@”, NSStringFromCGRect(rect)); } 在iPhone 7上运行时,我们得到如下日志: keyboard frame {{0, 451}, {375, 216}} keyboard frame {{0, 292}, {375, 375}} keyboard frame {{0, 451}, {375, 216}} keyboard frame {{0, 292}, […]