代码之家  ›  专栏  ›  技术社区  ›  jbm

在obj-c方法声明中不放置任何空格的约定是如何产生的?

  •  5
  • jbm  · 技术社区  · 15 年前

    方法声明中没有空白是如何成为惯例的?

    -(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
    

    似乎每个人都这样做,我看到的90%的例子,生成的模板,其他人的代码等等。我怀疑这只是另一个vi/emacs思想上的事情,但我想知道是否有K&R类型的“根本原因”的行为。

    我,我喜欢很多空白:

    - (UITableViewCell*) tableView: (UITableView*) tableView
             cellForRowAtIndexPath: (NSIndexPath*) indexPath
    

    这对我来说似乎好多了。

    3 回复  |  直到 15 年前
        1
  •  3
  •   slycrel    15 年前

    我知道很多代码样式需要习惯于更易于理解。在这种情况下,我认为苹果的语法反映了一个思维过程,而不仅仅是一种编码风格,而不仅仅是个人偏好。

    当我第一次开始使用Objective-C时,我也有同样的担心。在一行很长的代码中看不到空格会让人困惑。然而,一旦您对语法有了更好的理解,您就会注意到,即使在您的示例中也有空白。它用于将函数名的段与前一个参数分开。一旦你到了那里,就可以更容易地挑选出函数的每个部分和它的参数。函数名段在左边,参数在右边,重复。

    起初,我做了你列出的事情——一切都是空格。然而,结果却几乎和没有空白一样糟糕。因为到处都是空间,所以它们变得毫无意义。接下来我尝试在冒号后面和参数后面加空格,但这似乎也不正确——在某些情况下,函数名和参数开始变得混乱起来。我尝试了一些其他的空白样式,并最终回到使用苹果的标准几乎完全正确。我现在唯一不同的是返回类型——我更喜欢在+或之后有一个空格——在返回类型之后有一个空格。即使这样也没什么大不了的,主要是个人偏好,而不是任何具体的困难。(有一个沉重的C/C++背景,我喜欢一眼就能看到返回类型)。

    如果你坚持下去,你会突然发现自己喜欢苹果的方式胜过另一个。=)

        2
  •  1
  •   w-m    15 年前

    大多数选择器都足够短,您不需要将每个参数都放在自己的行上。它需要一些习惯,但是如果没有空格,可读性就会变得更好。比较:

    - (id) actionWithParam: (id) param object: (id) someObject andMore: (id) another
    
    - (id)actionWithParam:(id)param object:(id)someObject andMore:(id)another
    

    在第一行,你的大脑会将类似

    param object: (id)
    

    它不属于一起,而在第二个版本中,参数组被空白区很好地分隔开。现在这些组本身相当密集,但是冒号和paranthese实际上足以将名称从参数和类型中分离出来。

        3
  •  0
  •   Paul Ardeleanu    15 年前

    Objective-C中的良好实践表明,每个方法都应该包含一个谓词及其参数的一种描述(TableView:CellForRowatindexPath:),因此这些参数通常与方法名称的前一部分绑定在一起。 希望这是有道理的。