📄 javaformat.htm
字号:
<BLOCKQUOTE><FONT face=Arial>
<H3><A name=_Toc386368629></A><A
name=_Toc386369028></A>说明运行顺序</FONT></H3></BLOCKQUOTE>
<BLOCKQUOTE>
<P><FONT size=3>提高代码可读性的一个相当简单的方法是使用圆括号 (parenthesis,又叫“round brackets”)
来说明 Java 代码运行的准确顺序 [<A
href="http://www.xiaopu.com/topic.htm#NAG95">NAG95</A>];[<A
href="http://www.xiaopu.com/topic.htm#AMB98">AMB98</A>]。如果为了理解你的源码而必须了解编程语言的操作顺序,那么这说明源码中一定有什么重要的东西做的不对。
这大多是在 AND 或者 OR
其它几个比较关系处产生的逻辑比较上的问题。注意:如果你象前文所建议的那样,采用短小单独的命令行,那么就不会产生这个问题。</FONT></P></BLOCKQUOTE>
<HR align=left>
<H1><FONT face=Arial size=6><B><A name="Standards For Fields">字段标准</A>
(字段/属性)</B></FONT><SMALL> </SMALL><A
href="http://www.xiaopu.com/topic.htm#Top"><IMG alt=返回目录 border=0
height=20 src="" width=26></A></H1><FONT size=3>
<P><I>field</I> 这个词在这里指的是字段,Beans Development Kit (BDK) 叫它“属性” [<A
href="http://www.xiaopu.com/topic.htm#DES97">DES97</A>]。字段是说明一个对象或者一个类的一段数据。字段可以是象字符串或者浮点数这样的基本数据类型,也可以是一个对象,例如一个消费者或者一个银行帐户。</FONT></P><FONT
face=Arial><I><B>
<H2><A name="Naming Fields">命名字段</A></B></I></FONT><SMALL> </SMALL><A
href="http://www.xiaopu.com/topic.htm#Top"><IMG alt=返回目录 border=0
height=20 src="" width=26></A></H2>
<BLOCKQUOTE>
<P><FONT size=3>应采用完整的英文描述符来命名字段 [<A
href="http://www.xiaopu.com/topic.htm#GOS96">GOS96</A>],[<A
href="http://www.xiaopu.com/topic.htm#AMB98">AMB98</A>],以便使字段所表达的意思一目了然。象数组或者矢量这样是集合的字段,命名时应使用复数来表示它们代表多值。</FONT></P><B>
<P class=exampleheading><BIG>示例:</BIG></P></B></BLOCKQUOTE><FONT size=3>
<P class=example>firstName</P>
<P class=example>zipCode</P>
<P class=example>unitPrice</P>
<P class=example>discountRate</P>
<P class=example>orderItems</FONT><FONT face=Arial></P>
<H3><BIG><EM><A
name="Naming Components">命名组件</A>(部件)</EM></BIG></FONT><SMALL> </SMALL><A
href="http://www.xiaopu.com/topic.htm#Top"><IMG alt=返回目录 border=0
height=20 src="" width=26></A></H3>
<BLOCKQUOTE>
<P><FONT
size=3>应采用完整的英文描述符命名组件(接口部件),名字的后缀是组件类型名。这让你容易区分一个组件的目的和它的类型,容易在一个表里找到各个组件(许多可视化的编程环境在一个
Applet 程序或者一个应用程序中提供了一个所有组件的列表。如果所有名字都是类似于 <B>button1</B>,
<B>button2</B>, & 这样的话,很容易混淆)。</FONT></P></BLOCKQUOTE>
<BLOCKQUOTE><B>
<P class=exampleheading><BIG>示例:</BIG></P></B></BLOCKQUOTE><FONT size=3>
<P class=example>okButton</P>
<P class=example>customerList</P>
<P class=example>fileMenu</P>
<P class=example>newFileMenuItem</FONT></P>
<BLOCKQUOTE><FONT face=Arial><B>
<H4>命名组件的另一种方法。匈牙利符号</B></FONT></H4></BLOCKQUOTE>
<BLOCKQUOTE>
<P><FONT size=3>“匈牙利符号” [<A
href="http://www.xiaopu.com/topic.htm#MCO93">MCO93</A>]
是基于字段应按照以下方法命名的原则:xEeeeeeEeeeee,其中 x 指组件类型,EeeeeEeeeee
是完整的英文描述符。</FONT></P></BLOCKQUOTE>
<BLOCKQUOTE><B>
<P class=exampleheading><BIG>示例:</BIG></P></B></BLOCKQUOTE><FONT size=3>
<P class=example>pbOk</P>
<P class=example>lbCustomer</P>
<P class=example>mFile</P>
<P class=example>miNewFile</P>
<BLOCKQUOTE>
<P>这个方法的主要优点是,这是一个通用于 C++
代码中的工业标准,已经有许多人在遵守它。此外,开发者能快速地从变量的名字上来判断它的类型和用法。主要的缺点是,当有许多同一类型的部件时,前缀符号变得很笨重;而且,违背了采用完整的英文描述符的命名约定。</FONT></P></BLOCKQUOTE>
<BLOCKQUOTE><FONT face=Arial><B>
<H4>命名组件的另一种方法。匈牙利符号后缀</B></FONT></H4></BLOCKQUOTE>
<BLOCKQUOTE>
<P><FONT size=3>这基本上是其他两种方式的组合,生成的名字如
<B>okPb</B>,<B>customerLb</B>,<B>fileM</B> 和 <B>newFileMi</B>。
主要优点是组件名说明了组件类型,并且同一类的组件不在一起,而按照字母顺序排列。主要的缺点仍是未采用完整的英文描述符,它偏离了规范,使标准难以被记住。</P></FONT>
<P><B>设定组件命名标准。</B><FONT size=3>无论使用哪种约定,都要生成一个“正式”部件名列表。 例如,当命名按钮时,是用
<B>Button</B> 或是 <B>PushButton</B>,<B>b</B> 或是 <B>pb</B>?生成一个列表,让组里的每一个
Java 开发者都得到它。</FONT></P></BLOCKQUOTE><FONT face=Arial>
<H3><A name="Naming Constants">命名常量</A></FONT><SMALL> </SMALL><A
href="http://www.xiaopu.com/topic.htm#Top"><IMG alt=返回目录 border=0
height=20 src="" width=26></A></H3>
<BLOCKQUOTE>
<P><FONT size=3>Java
中,常量,即不变的值,一般用类的<I>静态常量</I>字段来实现。公认的约定是,采用完整的英文大写单词,在词与词之间用下划线连接 [<A
href="http://www.xiaopu.com/topic.htm#GOS96">GOS96</A>]。</FONT></P><B>
<P class=exampleheading><BIG>示例:</BIG></P></B></BLOCKQUOTE>
<BLOCKQUOTE>
<P class=example><FONT size=2>MINIMUM_BALANCE</P>
<P class=example>MAX_VALUE</P>
<P class=example>DEFAULT_START_DATE</FONT></P></BLOCKQUOTE>
<BLOCKQUOTE><FONT size=3>
<P>这个约定的主要优点是,它有助于区分常量和变量。在本文后面的章节中我们将看到,如果用定义获取函数返回常量值的方法来取代定义常量,代码的可适应性和可维护性都会大大提高。</P></FONT></BLOCKQUOTE><FONT
face=Arial>
<H3><A name="Naming Collections">命名集合</A></FONT><SMALL> </SMALL><A
href="http://www.xiaopu.com/topic.htm#Top"><IMG alt=返回目录 border=0
height=20 src="" width=26></A></H3>
<BLOCKQUOTE>
<P><FONT
size=3>一个集合,例如数组和矢量,应采用复数命名来表示队列中存放的对象类型。命名应采用完整的英文描述符,名字中所有非开头的单词的第一个字母应大写。</FONT></P><B>
<P><BIG>示例:</BIG></B></P><FONT size=3><PRE>customers</PRE><PRE>orderItems</PRE><PRE>aliases</PRE>
<P>这种约定的主要优点是有助于区分表示复数值(集合)和单值(非集合)的字段。</FONT></P></BLOCKQUOTE><FONT
face=Arial><I><B>
<H2><A name="Field Visibility">字段可见性</A></B></I></FONT><SMALL> </SMALL><A
href="http://www.xiaopu.com/topic.htm#Top"><IMG alt=返回目录 border=0
height=20 src="" width=26></A></H2>
<BLOCKQUOTE>
<P><FONT size=3>当字段被声明为 <I>protected</I>
类型时,子类中的成员函数可能会直接访问它,有效地提高了类内层次结构的耦合性。这使类更难维护和加强,所以应该尽量避免。字段不应被直接访问,而应采用存取成员函数(参见下文)访问。</P></FONT>
<TABLE border=1 cellPadding=7 cellSpacing=1 width=590>
<TBODY>
<TR>
<TD bgColor=#ffffff vAlign=top
width="14%"><B><BIG>可见性</BIG></B></TD>
<TD bgColor=#ffffff vAlign=top width="43%"><B><BIG>说明</BIG></B></TD>
<TD bgColor=#ffffff vAlign=top
width="43%"><B><BIG>正确用法</BIG></B></TD></TR>
<TR>
<TD vAlign=top width="14%"><FONT size=3>public</FONT></TD>
<TD vAlign=top width="43%"><FONT
size=3>一个公共字段可被任何其他对象或者类中的成员函数访问。</FONT></TD>
<TD vAlign=top width="43%"><FONT size=3>不要让字段公有。</FONT></TD></TR>
<TR>
<TD vAlign=top width="14%"><FONT size=3>protected</FONT></TD>
<TD vAlign=top width="43%"><FONT
size=3>被保护的字段可被它声明时所在的类及该类的子类的所有成员函数访问。</FONT></TD>
<TD vAlign=top width="43%"><FONT size=3>不要让字段被保护。</FONT></TD></TR>
<TR>
<TD vAlign=top width="14%"><FONT size=3>private</FONT></TD>
<TD vAlign=top width="43%"><FONT
size=3>私有字段只可以被它声明时所在的类的其它成员函数调用,该类子类中的函数不可以调用。</FONT></TD>
<TD vAlign=top width="43%"><FONT
size=3>所有的字段都应置为私有,由获取和设置成员函数(存取函数)访问。</FONT></TD></TR></TBODY></TABLE><FONT
size=3>
<P>对于那些非长期性的字段(它们不被永久保留),应将它们标注为 <I>static</I> 或 <I>transient</I> [<A
href="http://www.xiaopu.com/topic.htm#DES97">DES97</A>]。 使它们与 BDK
的约定一致。</FONT></P><FONT face=Arial>
<H3>不要“隐藏”名字/font></H3>
<P><FONT
size=3>名字隐藏是指给局部变量、参数或者字段所取的名字,与另一个更大范围内定义的变量、参数或者字段的名字相同(或相似)。例如,如果把一个字段叫做
<B>firstName</B> ,就不要再生成一个局部变量或者参数叫做 <B>firstName</B>,或者任何类似的名字,如
<B>firstNames</B> 或
<B>fistName</B>。名字隐藏会使代码难于理解,并容易产生问题。因为你或者其他开发者在修改代码时,会误读代码,而错误又很难发现。</FONT></P></BLOCKQUOTE><FONT
face=Arial><I><B>
<H2><A name="Documenting a Field">注释一个字段</A></B></I></FONT><SMALL>
</SMALL><A href="http://www.xiaopu.com/topic.htm#Top"><IMG alt=返回目录
border=0 height=20 src="" width=26></A></H2>
<BLOCKQUOTE>
<P><FONT size=3>所有的字段都应很好地加以注释,以便其他开发者理解它。要想有效地注释,以下的部分需要说明:
<OL><B>
<LI>字段的说明。</B>需说明一个字段,才能使人了解如何使用它。 <B>
<LI>注释出所有采用的不变量。</B>字段中的不变量是指永远为“真”的条件。例如,字段 <B>dayOfMonth</B>
的不变量可能是它的值只能在 1 到 31
之间(显然,可以用基于某一年里的某个月份来限制这个字段值,使其变的更加复杂)。通过说明字段值的限制条件,有助于定义重要的业务规则,使代码更易理解。
<B>
<LI>示例。</B>对于那些有复杂业务规则与之相关联的字段,应提供几个例子,使它们容易理解。一个例子常象一幅画:它抵得上几千个词语。
<B>
<LI>并行事件。</B>对众多程序开发者来说,并行性是一个新而复杂的概念;事实上,即使对有经验的并行程序开发者来说,并行性也是一个老但却复杂的课题。最终结果是,如果应用了
Java 的并行编程特性,那么你应在程序中详细地注释出来。 <B>
<LI>可见性决策。</B>如果声明了一个非私有字段,则应说明为什么要这样做。字段的可见性在上文中(第 3.2
节“字段的可见性”)讨论了,支持封装的存取成员函数的用法将在下文(第 3.4
节“存取成员函数的使用”)中讨论。总的来说,最好能有一个好的理由解释为什么不将变量声明为私有类型。</FONT>
</LI></OL></BLOCKQUOTE><FONT face=Arial><I><B>
<H2><A
name="Using Accessor Member Functions">使用存取成员函数</A></B></I></FONT><SMALL>
</SMALL><A href="http://www.xiaopu.com/topic.htm#Top"><IMG alt=返回目录
border=0 height=20 src="" width=26></A></H2>
<BLOCKQUOTE>
<P><FONT
size=3>除了满足命名约定之外,适当地使用<I>存取成员函数</I>,即提供更新或访问字段值的成员函数,可以实现字段的可维护性。存取成员函数有两种:<I>设置函数</I>(也叫<I>变化函数</I>)和<I>获取函数</I>。设置函数修改变量的值,获取函数取到变量的值。</P>
<P>虽然存取成员函数往往会增加代码费用,但是现在 Java
编译器使用时已被优化,所以存取成员函数会增加代码费用这一点已不再正确。存取函数帮助隐藏了类的具体实现细节。一个变量仅能访问两个控制点:设置函数和获取函数。让需修改的点最小化,增加了类的可维护性。Java
代码的优化将在(第 7.3 节“优化 Java 代码”)中讨论。</FONT></P>
<P><FONT
size=3><STRONG>你的机构能改进的最重要的标准之一是存取函数的使用</STRONG>。一些开发者不愿使用存取成员函数的原因是,他
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -