代码之家  ›  专栏  ›  技术社区  ›  Alan Haggai Alavi

如何和在哪里打破长代码行?[副本]

  •  5
  • Alan Haggai Alavi  · 技术社区  · 7 年前

    可能重复:
    Where to wrap a line of code, especially long argument lists?
    Coding standards and line length

    你好,

    • 你在哪里破译长代码行?(示例:运算符之前或之后)
    • 如果是长字符串,是否将该字符串拆分为子字符串?
    • 断开长线时还存在其他什么情况?
    6 回复  |  直到 16 年前
        1
  •  5
  •   IntelliChick    16 年前

    从历史的角度来看,由于屏幕大小的原因,这曾经是旧的80列宽度。 然而,由于这并不总是典型的情况,我认为严格遵守这一点并不重要。

    但是,如果你仔细想想,你不会真的想在屏幕上滚动来真正地读取整个代码。分解它绝对是一个好主意,所以坚持80列确实使它更容易阅读,如果你从你的宽屏到你的笔记本电脑。

    我就是这样把东西分开的:

    1)操作员之后

    if(longVariableName || someOtherVariable ||  
       nextVariable)  
    {
       //Some code here.
    }
    

    当您在读取代码时,在运算符之后将其分解,意味着当您开始读取下一个运算符时,最后一个操作(在我的示例中)在您的头脑中。使其更容易阅读、理解和理解。

        2
  •  3
  •   Esteban Araya    16 年前

    多种选择:

    1. 与你的同龄人建立一个标准。
    2. 打印宽度。
    3. 屏幕宽度。

    -干杯。

        3
  •  3
  •   paxdiablo    16 年前

    这只是个人偏好,因为问题是主观的,但我倾向于遵循这些准则。

    • 尽可能将代码限制为79个字符(这是为了让它以足够大的字体打印出来,以供我的老眼睛阅读)。通常情况下,我会在60范围内的某个地方将它们断开,以便不可避免地编辑行以解决问题,这并不意味着我需要重新格式化很多内容:—)

    • 在层次结构中尽可能高地分解该行。我的意思是 x = 1 * 2 + 3 * (4 + 5); 一开始就坏了 + 而不是其他地方。这是因为语句的最高级别“元素”是 x , 1 * 2 3 * (4 + 5) .

    • 智能地使用缩进,以确保以下行被视为第一行的一部分。例如,如果三行语句的第一行以3个制表符开头,那么下面的两行有4个制表符。

    比如:

    x = 1 * 2 +
        3 * (4 + 5);
    

    或:

    if (1 * 2 =
        3 * (4 + 5))
    {
        doSomething();
    }
    

    最后一个通常是我唯一一次在一条单独的线上放一个大括号。通常我会:

    if (1 * 2 = 3 * (4 + 5)) {
        doSomething();
    }
    

    但拆分它会使它看起来像 if 是块的一部分:

    if (1 * 2 =
        3 * (4 + 5)) {
        doSomething();
    }
    

    我不喜欢。

    至于弦,如果它们比我喜欢的宽度长,我倾向于把它们分开。C和它的兄弟们使得这很容易,因为编译器处理 "abc" "def" "abcdef" . 即使有 一个运行时影响(如串接字符串),我将把它们分开,但我仍然会尽量减少这种影响。

        4
  •  2
  •   Matt Mitchell    16 年前

    如果一个语句足够长,需要中断,我将尝试在每个“语义块”的一行处中断它,以确保没有任何一行被误认为是单独的语句(例如,从一个运算符开始(即使它是一个点),而不是以一个运算符结束一行)。我还将缩进以表示任何逻辑层次(如果一个是明显的)。

    当我说语义块时,我倾向于发现一个长语句通常有某种模式,允许您将它划分为几个过程。它们可以是自己的行,但有时它们很小,足以换行,特别是在使用链接对象时。

        5
  •  2
  •   fbartho    16 年前

    这取决于您所选择的环境:您的语言、您的标准IDE、您的同事,以及从本质上看漂亮和易于理解的内容。 .

    你没有提到你选择跟随其中的哪一个。如果需要在终端窗口中编辑此代码,可以从经典的备用:80个字符开始——超过80个字符,一些终端和CLI编辑器会中断或痛苦地换行。出于这个原因,许多IDE将在第80列标记处提供可视提示。如果您可以合理地期望每个关注代码的人都将使用功能齐全的IDE(例如:Xcode、Eclipse和MS Visual Studio),那么这对您来说就不算什么要求了。

    在我的经验中,所有的地方都喜欢避免过长的行,即使我们都使用可以自动换行的IDES。根据我的经验,线包装在任何情况下都被认为是坏的和禁用的。

    从语义上下文中,我尝试在子句点处中断。基本上,如果行以120个字符结尾,如果没有方便的位置,我就不太可能将其拆分。如果它的长度超过80个字符,并且有可识别的子句,我将它们在这里进行分解。

    这里使用的“子句”是一个可以用括号括起来的表达式。数学多部分表达式在运算符处被分解,运算符是后续行中的第一项。当讨论一个长的逻辑块时,就像在if语句或while/for循环中一样,同样的事情也适用,我用缩进的后续行和首先使用的运算符来中断语句。

    如果您正在使用Objective-C Xcode开发OSX,那么Xcode将帮助您解决问题。它将自动缩进后续行,使“:”均匀对齐。这提供了一个可能易于读取的方法调用。

    实际上,你应该为自己尝试更长的线条长度,并决定什么时候事情变得难以理解。对于书面文本(评论或小说,两者都有),我发现过宽的专栏就像是runon语句,很容易让我失去位置。当代码中的行数超过100个字符时,通常意味着有许多子句,如果必须左右滚动才能阅读,那么很容易丢失代码尝试执行的操作。最后,当一行中有大约100个字符时,您可以并排打开两个代码窗口,用于比较/对比/上下文信息…等。长线使这不切实际。

    许多编码人员都会同意,使用您熟悉的整洁的编码风格,您通常可以检测到复杂或令人不安的行或区域,因为它们是如何脱离规范的。这几乎是一个潜意识的暗示,让你注意到当一条线或一个方法需要重构或爱的时候。突出的钉子是第一个得到锤子的(如果我正确地应用了那条法律)。而过长的线条则是一些需要简化或评论的线索。

        6
  •  1
  •   apollodude217    16 年前

    因为现代的IDE支持水平滚动,所以我不太关心一行本身有多长(除非我的团队这样做);只关心理解它有多简单。但这并不重要,因为我把事情分成几行或一些方法,使它们更容易理解,所以每行的长度自动保持较短。

    推荐文章