Objective-C 命名 UILabel iOS

4

我已经思考了很长时间该怎么处理这个问题。

假设我要创建一个UILabel,这个标签将包含一个名称。 所以,我会毫不犹豫地给这个UILabel命名为|name|。

然后我会有一个NSString来保存实际的名称字符串。 所以我认为给这个字符串命名为|name|更合适,对吧?

那么我应该给UILabel取什么名字呢?

我考虑过将它命名为labelName。

但是这是一种被强烈反对的匈牙利命名法(hungarian notation)。

这是一个死胡同吗?

3个回答

7

Objective-C 是一种冗长的编程语言,在命名变量和参数时通常需要包含类型信息。

UILabel *nameLabel = ...
NSString *name = ...

对于原始值(甚至是 NSStrings 和 NSNumbers),通常省略类型。


比我快得多...几乎相似 :) - Anoop Vaidya
2
最后我找到了一些和我想法相同的人。有人告诉我,不要在名称中包含类型。我考虑过像 "labelName" 这样的做法,这样当我有很多 UILabel 时代码看起来更整洁(所以它们会对齐)。但后来我也放弃了这个习惯。 - WYS
1
如果我看到一个名为labelName的变量,我会认为它是一个存储标签名称的字符串。我建议使用nameLabel - DrummerB

6

当你遇到这种情况时,要仔细思考并更改名称。

在您的情况下,可以使用:

UILabel *nameLabel;
NSString *name; //*nameString; // *nameValue;

您可以在类型后缀中添加 (虽然这不是一个好习惯,但也有例外情况),如以下示例所示。 nameArray 不是一个好的名称,应该改为 names
NSArray *names; // instead of nameArray

为什么这不是一个好的实践?即使在苹果的API中也很常见。 - DrummerB
@DrummerB:在类型后缀中加上 NSArray *nameArray,而不是 names - Anoop Vaidya
当然可以,但在这种情况下完全没有问题。 - DrummerB
@DrummerB:这就是我说异常的原因 ;) - Anoop Vaidya
有点困惑。答案是“nameArray不是一个好的名称,应该改为names”。但是在代码中建议使用nameArray? - WYS
我不建议:p。等一下,我会让它更清楚。 - Anoop Vaidya

0

我认为你的主要问题是你的模型正在泄漏到视图中。你的标签(显然是一个视图)最好不要知道它所呈现的模型的任何信息。

UITableViewCell为例。它有一些输出口:

  • textLabel
  • detailTextLabel
  • imageView

这些可以用来呈现几乎任何类型的模型数据,包括一些主要文本和可选的图像和/或更多文本。

你还可以注意到,在这些示例中,UIKit会在变量后缀上类型(在标签的末尾添加Label)。对于UIView上的backgroundColor属性也是如此。


不一定。如果他正在实现一个控制器,那么他会有一个视图(标签)和一个模型(字符串),对吧? - DrummerB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接