`
JavaCrazyer
  • 浏览: 3008657 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类

Java源代码的折行规则

阅读更多

一些企业在招聘程序员的时候,总会特意提出一个要求,即要求具有良好的编码规范。确实现在程序开发人员已经不在是单枪匹马的单干,而是讲究团体作战。此时就要求团队内的乘员都可能够恪守代码的编写规范,这对于乘员之间共享代码、排错等作业都具有非常现实的意义。这在Java语言中当然也不例外。笔者借这次机会,就跟大家分享一下Java源代码的折行规则。虽然这基本不涉及到功能层面的内容,但是对于提高代码的阅读性却有不可替代的作用。

一、代码的最大长度。

虽然在Java的编译器中对于代码的最大长度没有硬性的规定。但是如果代码的长度太长,超过了编译器的最当行宽,显然阅读起来比较麻烦。为此根据笔者的经验,通常情况下Java源代码的行长度不应该大于80个字符。如果超过这个长度的话,在一些开发工具和编辑器上就无法很好的显示。如需要通过滚动条来显示后面部分的代码。当其他项目成员阅读这超长的代码时,就会看得眼花缭乱。当人的温饱问题解决了之后,就需要开始注意美观方面的问题。所以程序开发人员在开发应用程序的时候,要尽量避免书写长的代码。如果代码的每行长度确实需要超过80个字符的话(最好将每行代码的长度控制在70个字符左右),那么就需要对代码进行分行。

二、在恰当的地方对代码进行分行。

笔者建议将Java源代码每行的长度控制在70个字符、最大不超过80个字符。当超过这个字符长度的时候,开发人员就需要考虑在恰当的地方对他们进行分行处理。不过这个分行也不是说开发人员想在哪里进行分行就在哪里进行分行。这个分行是有一定技巧的。虽然这些技巧大部分并不是强制性的规定,但是都是一些专家们的经验总结,可以提高代码的阅读性。为此笔者希望各位程序开发能够严格的遵守。

技巧一:高层折行优于低层折行。

这个技巧是说,在考虑对代码进行折行处理的时候,需要注意代码的层次性。如某段代码涉及到混合四则运算,而四则运算又有明显的运算顺序,此时对代码进行折行时就最好能够在四则运算的关键顺序上进行折行处理。如现在有如下的一段代码:

Mynum=mynum1*(mynum1+mynue2+mynum3-mynum4)+8*mynum5

如果要对这段代码进行折行的话,该在哪个地方加入一个折行符号呢?如果是笔者处理的话,笔者会按如下的格式对代码进行折行处理。

Mynum=mynum1*(mynum1+mynue2+mynum3-mynum4)

+8*mynum5

这主要是根据四则运算的运算层次来进行折行的。显然,*符号的优先级要比+符号要高。所以在+号前面对其进行折行处理,那么就可以一目了然的反应出代码的运算层次。可以大幅度的提高代码的阅读性。所以代码折行的第一个技巧就是高层折行优于低层折行。如此的话,可以使得应用程序的结构代码更加的清晰,更容易被团队成员所理解。

技巧二:在运算符前面进行折行处理。

其实在如上的折行技巧中,还隐藏着一个规则,即在运算符之前进行折行。如上例所示,笔者就是在+号前面进行折行,而不是在+号后面进行折行处理。这主要也是考虑到代码的可读性。如上面这个例子中,如果在+号后面进行折行处理的话,则下一行就会给人一种凭空多出来的感觉,显得代码很不连贯。跟这个规则类似,如果在折行处理的时候遇到逗号时,那么最好能够在逗号后面进行折行。如在一个方法中,需要传入5个参数。此时如果代码行比较长,那么就需要在几个参数之间进行折行处理。此时最理想的折行位置,就是在某个参数的逗号后面。注意,使在逗号后面进行折行,而不是在逗号前面。因为一个参数一个逗号是匹对的。而如果一个逗号加一个参数,则让人看起来很不舒服。

技巧三:这行代码的对起方式。

当不得已对代码进行折行处理时,下一行的代码应该与其同等级的代码行左对齐。如上例所示,在+号前面将某一段四则运算公式进行折行处理的时候,其+号符号已经采取缩进处理。其缩进后的效果就是要与其同等级的代码行左对齐。如此的话,明眼人一看就知道这段代码采取过折行处理;而且跟上一行代码的层次关系。当一段代码被分割成三行甚至跟更多行数的时候,这个规则会非常的有用。如果能够严格遵守这个规则,即使将代码分割成多行,看起来也不会觉得那么混乱。反而给人一种比较有层次的感觉。

另外在采取缩进处理的时候,可以利用Tab键来提高缩进处理的效率。因为直接按空格的话,有可能空格字符数量不一致,会让人觉得层次不起,产生比较大的混乱。一般情况下,当代码行两侧距离页边的距离比较大,看其来不怎么舒服时,可以在代码行中通过插入TAB键(会在代码行中连续插入8个字符)来提高代码的阅读性,让代码的缩进实现统一。

技巧四:为变量寻找一个合适的位置。

在编写应用程序时,尽量将变量声明放置在一个代码块的开始处,也就是说{}花括号的开始位置。虽然说可以在需要使用变量的时候再对其进行声明。但是笔者不同义如此操作。因为如果在的呢感到使用变量的时候再来声明变量时,会降低代码的可读性。同理,也需要避免低层声明与高层声明重复,这样会引起代码混乱并可能引发程序功能性错误。而且这种错误在后续的排错中很难被发现。为此要在应用程序开发的时候就要尽量避免这种错误。

在声明变量的时候,有时候可能代码很简单,生命变量的行总共加起来也不会超过十个字符。此时能否把多个变量的声明写在同一行呢?从就技术上来说,这是可行的。也就是说,Java编译器允许将多个变量定义在同一行上。但是从阅读性上来说,这并不是很好的做法。笔者的建议是,即使变量定义再简单,或者变量比较多,也最好分行进行变量的声明。也就是说,一行声明一个变量。这可以提高代码的可阅读性。而且有时候往往需要对变量加一个注释说明变量的用途,如果以行定义一个变量,添加行注释也相对简单许多。

总之,以上的这些折行的规则基本上不会影响到代码的运行。但是,对于代码的维护与后续的排错、升级、二次开发等等具有不可忽视的作用。而且现在基本上应用程序开发式团队开发,故大家都遵守同样的代码编写规范是非常重要的。笔者在开发一个应用程序的时候,事先都会花一定的时间,跟项目成员强调这些折行的规则。目的只有一个,就是提高代码的可读性,便于后续代码的共享与维护。毕竟后续面对这些代码的,并不是客户,而是我们自己。我们程序员在编写代码的时候,不能够搬起石头砸自己的脚。笔者认为,现在一个合格的程序人员,不仅技术功底上要过得硬,而且还必须要遵守这些无形规则的约束。难怪现在这么多企业在挑选程序开发人员的时候,都会注明良好的编码规范。现在对于这些无形中的条条框框,项目经理已经开始重视起来。

1
5
分享到:
评论
1 楼 ruanwxh 2011-05-14  
虽然说可以在需要使用变量的时候再对其进行声明。但是笔者不同义如此操作。因为如果在的呢感到使用变量的时候再来声明变量时,会降低代码的可读性。

我记得<<代码大全>>里的建议,刚好相反,用到时,才声明变量.

相关推荐

    JAVA上百实例源码以及开源项目源代码

    Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...

    java编译器源代码

    Java编译器源代码是Java开发工具包(JDK)的一部分,主要负责将Java源代码转换为可执行的字节码。深入理解Java编译器的源代码对于开发者来说是提升编程技能、优化代码性能以及了解Java语言底层运作机制的重要途径。...

    Java编译器源代码

    Java编译器,通常被称为Javac,是Java开发工具包(JDK)的重要组成部分,负责将源代码转换为可执行的字节码。在Java编程语言中,编译过程并非像C++或C那样直接生成本地机器代码,而是生成跨平台的中间表示——字节码...

    编译原理上的java版C编译器源代码.rar

    本资源提供了一个基于Java实现的C语言编译器源代码,旨在帮助开发者深入理解编译器的工作原理,以及C语言的基本架构。以下将详细介绍其中涉及的知识点。 一、编译原理 编译器是程序开发中的核心工具之一,它主要...

    JAVA编译器原代码

    Java编译器是将源代码(.java文件)转换为字节码(.class文件)的工具,使得Java程序可以在任何支持Java虚拟机(JVM)的平台上运行。本资源包含了一个简单的Java编译器的原始代码,对于理解Java语言的编译过程以及...

    java源程序文件名

    标题提到的"java源程序文件名"指的是使用Java编程语言编写的源代码文件,这些文件通常具有".java"的扩展名。在这个特定的场景中,源程序文件名被设定为"Dcount.java",这暗示着它是一个关于计算折扣的程序,可能用于...

    JAVA源程序

    JAVA源代码经过编译器转换成字节码(.class文件),可以在任何支持JAVA虚拟机(JVM)的平台上运行,这就是所谓的“一次编写,到处运行”(Write Once, Run Anywhere)原则。 JAVA源程序的编写遵循一定的语法规则,...

    Compiler:编译器的JAVA源代码(Netbeans项目)-java project source code

    **编译器:Java源代码解析与Netbeans项目详解** 在计算机科学中,编译器是一种至关重要的软件工具,它负责将高级编程语言(如Java)编写的源代码转换为机器可执行的目标代码。本项目名为"Compiler:编译器的JAVA源...

    javac源代码,java具体编译步骤

    Java 编译器`javac`是Java程序开发的核心组件之一,它负责将开发者用Java编写的各种源代码文件(.java)转换成可执行的字节码文件(.class)。这个过程涉及到许多编译阶段,包括词法分析、语法分析、语义分析以及...

    java eclipse代码折叠 插件

    "java eclipse代码折叠 插件"正是为了解决这个问题,它类似于C#中的`#region`-`#endregion`语法,可以帮助开发者更有效地管理和阅读代码。 代码折叠插件允许开发者将代码块按照需求隐藏或显示,提高代码的可读性和...

    编译原理课程设计报告+源代码

    7. **错误处理**:编译器还需要具备良好的错误检测和报告机制,当源代码违反语法规则或有其他问题时,能够及时给出错误信息,帮助程序员调试。 在课程设计中,你可能会学习使用诸如ANTLR、Flex&Bison、Yacc或LLVM等...

    编译原理课程解释器构造Java源码

    解释器是编译原理的一个重要应用,它不同于传统的编译器,不需要先将源代码编译成目标代码,而是直接执行源代码。 在这个“编译原理课程解释器构造Java源码”中,我们可以推测这是一个基于Java编程语言实现的解释器...

    javac 编译器源代码

    Java 编译器 javac 是 Java 语言的核心组成部分,它将程序员编写的源代码转换成计算机可以理解的字节码,使得 Java 应用能在不同的平台上运行。深入了解 javac 的源代码,对于 Java 开发者而言,是提高技术水平、...

    JAVA某店POS积分管理系统(源代码+LW).rar

    描述中的信息与标题基本一致,"JAVA某店POS积分管理系统(源代码+LW).rar" 暗示这是一个压缩文件,格式为RAR,包含有该积分管理系统的Java源代码以及可能的附加文档,如"论文",可能是一份关于系统设计、实现和功能的...

    基于Java的酒店管理系统源码

    这部分可能涉及到数据挖掘、机器学习的算法,如协同过滤或关联规则分析,用Java的ML库如Weka或TensorFlow进行实现。此外,为了快速响应用户的查询,可能还会用到Java缓存技术,如 Ehcache 或 Redis。 自动结账功能...

    java语言编写词法、语法、语义分析器

    Java中的词法分析通常使用正则表达式来定义这些模式,并通过扫描源代码来识别它们。例如,`javac`编译器中的词法分析器会识别出"int"作为关键字,"myVariable"作为标识符,"5"作为整型常量。 **语法分析器(Parser...

    java某百货店POS积分管理系统_积分点更新生成以及通票回收处理(源代码+论文).zip

    该压缩包文件“java某百货店POS积分管理系统_积分点更新生成以及通票回收处理(源代码+论文)”是关于一个基于Java实现的百货店POS(销售点)系统的实例,包含积分管理和通票回收功能。这个系统对于理解Java在商业应用...

    Java编程规范.doc

    Java编程规范是软件开发中的重要组成部分,它确保了代码的可读性、可维护性和团队协作的一致性。以下是对标题和描述中提到的Java编程规范的详细说明: 1. **命名规范**: - **package**: 包名应采用小写字母,且...

    清华大学编译原理的PL/0源代码

    清华大学出版的《编译原理》教材中,包含了PL/0的源代码实现,这为我们深入理解编译器的工作原理提供了实践基础。 在这个压缩包中,有两个关键文件:`all.c`和`pl0.h`。`all.c`是主程序文件,通常包含PL/0编译器的...

    使用 Java 编写的井字游戏源代码

    游戏规则简单,两个玩家在一个3x3的网格上轮流选择方格,标记X或O,直到一方获胜或游戏平局。 ### 项目功能 - **玩家互动**:两名玩家轮流选择方格,输入X或O。 - **游戏板显示**:屏幕上显示一个3x3的网格,方格...

Global site tag (gtag.js) - Google Analytics