はじめにこのドキュメントでは、Javaルールは中間が通常であると、将来的により発展レベルが他のルールを記述していきます、三つの主要なレベルに分かれている説明します。これらの規則の遵守は、プログラムの効率を向上させる、というように、コードをより読みやすくすることができます。
まず、最終的にはリソースに入力または出力方法をオフに
入力または出力ストリームのメソッドを定義する本体、最終的にそれをオフにする必要があります。colse()メソッドが動作しないので、通話のこれらのタイプは、ルールを遵守する必要はありません。
java.io.StringWriter
java.io.ByteArrayOutputStream
java.io.ByteArrayInputStream
本方法は、時間を返した場合は、システムリソースのリークにつながるそうする)リソースを入力()と出力(解放するclose()メソッドをコールしていません。そして、いずれのケースでは、異常の時間を含め、全閉()メソッドに戻るには、コールに決定されなければなりません。最終的にはメソッド内でこのメソッドを追加するので、必要があります。これは、リソースがどのような状況の下でシャットダウンされることを保証します。
エラーの例:
public class CIO
{
public void method (java.io.File f)
{
java.io.FileInputStream fis = null;
try
{
fis = new java.io.FileInputStream (f);
fis.read ();
fis.close ();
}
catch (java.io.FileNotFoundException e1)
{
System.out.println("File not found");
}
catch (java.io.IOException e2)
{
System.out.println("I/O Exception");
}
// 如果出现异常,这里就不能保证关闭资源。
}
}
改訂コード:
public class CIOFixed
{
public void method (java.io.File f)
{
java.io.FileInputStream fis = null;
try {
fis = new java.io.FileInputStream
(f);
fis.read ();
}
catch (java.io.FileNotFoundException e1)
{
System.out.println("File not found");
}
catch (java.io.IOException e2)
{
System.out.println("I/O Exception");
}
finally
{
if (fis != null)
{
try
{
fis.close ();
}
catch (java.io.IOException e)
{
System.out.println("I/O Exception");
}
}
}
}
}
他の二つ、注意力の問題
常に文は、一般的に唯一のものである場合ならば、その後に起こることはできません{}であると考えました。同じ、ネスティング場合が他にない場合でも、{}が必要です
エラーの例:
if (i < 5)
if (i < 2)
i++; else
i--;
更新:
if (i < 5)
{
if (i < 2)
i++;
} else
{
i--;
}
また、保持どのようなコードでは第三に、キャッチしない()ブロック
いくつかのエラー処理コードを入れてキャッチ()ブロックでは良い習慣です。しかし、キャッチ場合は()のjavadocについてコードの中、それも可能です。
エラーの例:
try {
System.in.read ();
}
catch (java.io.IOException e)
{
// 错误
}
正しいです:
try {
System.in.read ();
}
catch (java.io.IOException e)
{
System.out.println("Descriptive error");
}
第四に、条件値を内部に接続されていない場合
その場合、システムはエラーを報告します。値を内部でのJavaの文を添付多くの条件では、それは非常に賢明であり、システムはエラーを報告します。例外が発生するのは簡単です。簡単なメンテナンスを可能にし、このルールを遵守し、不整合を回避。
エラーの例:
if (b = true)
右:
if (b == true)
文ための5つは、ループする必要があります。
あなたは一度だけの文のため、そしてない{}をすれば!エラーの例:
for (i = 0; i < 10; i++);
System.out.println (i);
ここでは一度だけ)(印刷します。正しいです:
for (i = 0; i < 10; i++)
{
// FIXED
System.out.println (i);
}
第六に、(メインのような方法を定義していません)
そこにJavaでは、main()メソッドは、特殊な方法です。だから、シャッフルを避けるために、この方法の独自の定義では、このような時に名前を定義しないでください。
七つのではなく、直接または間接的に「エラー」と「Throwableの」サブクラスの定義を行います
java.lang.Error
唯一あなたが直接、または直接ではなく、継承されたクラスのエラー 'クラスを定義する場合、このメソッドをオーバーライドするJVMで異常が現れた場合、また、このエラーが代わりにこのクラスの、内部JVMであると指摘しました。エラー例外処理を確認することができないように、だから、Javaコンパイラのためには、表示されません。
java.lang.Throwable'是'java.lang.Exception
そして、java.lang.Error
そういうことは、このようなユーザ定義の例外として優れたクラスを、継承する必要がある場合java.lang.Exception
。
エラーの例:
public class ABC extends Error
正しいです:
public class ABC extends Exception
八、問題「ケース」内の「スイッチ」文について
各「ケース」で最高のは、以下の行くしないように制御するために「戻る」や「ブレイク」で定義されています
「ケース」に行きます。「休憩」または「リターン」の文章のない最後の「ケース」ステートメントの場合、プログラムは「ケース」のコードに移動します。この「場合」は最後のものであるならば、それは「ケース」の後ろにある場合には、その後、全体×××を見ていない、問題はないでしょう。
エラーの例:
switch (i) {
case 1:
x = 10;
break;
case 2:
x = 20;
default:
a = 40;
break;
正しいです:
switch (i) {
case 1:
x = 10;
break;
case 2: // VIOLATION
x = 20;
break;
default:
x = 40;
break;
ナインは、「)(System.getenv」を使用することはお勧めしません。
「System.getenv()」はお勧めしません、このアプローチは非常に良いように見えますが、すべてのシステムでは、環境変数を持っていません。いくつかの不便を引き起こす可能性も、このメソッドを使用しないでください。
エラーの例:
void method (String name)
{
System.getenv (name);
// 可以用其他方法来代替
}
あなたは、このメソッドを使用しない場合は、代わりに他の方法を使用することができます。例えば:「はSystem.getProperty()」、「getTypeNameメソッド()」また、Javaシステムプロパティで見つけることができる、など。
テンは、枝に「\ N」または「\ rを」を使用しないでください
これら二つのマーカー、特には「\ n」は、非常に一般的なようです。私たちはしばしば支店として使用します。しかし、異なるシステムでは、Javaのプラットフォーム独立に、いくつかのセンス逆に異なる文字の枝、これらの文字を使用します。
エラーの例:
System.out.println("Hello\n" + name);
私たちは、この方法は、異なるプラットフォームで同じ機能を果たすことができます)(などのprintlnとして、代わりに他のいくつかの方法を使用することができます。後者は、あなたがこの方法を使用することをお勧めします。
System.getProperty("line.separator")
セブンイレブン、そのためすべての内部クラス「プライベート」
Javaは別のクラスは、Javaバイトコードを持つクラスは、そのような概念ではありません含まれていことができます。タイプは、コンパイラパッケージ-privateクラスとして解釈されます。より深い程度に、オブジェクトは、内部のプライベート内部クラスは、クラスは、アクセスの同じパッケージの他のタイプ内でアクセスすることができる含むことができます。
エラーの例:
public class INNER
{
class INNER_Class
{
void setValue(int i)
{
_value = i;
// 现在包就可以访问了
}
}
private int _value;
}
だから我々は、プライベートクラスを追加する必要がありますINNER_Class
十二、インタフェースのシリアル化をしないでください
バイト配列は、シリアライズされたオブジェクトが含まれている場合。***誰が(民間含む)一緒にオブジェクトフィールドの内部状態を読み取ることができます。
エラーの例:
public interface sample extends
java.io.Serializable
AMW市I:共有するためのJava開発技術の研究や知識に焦点を当てます!
- - 終わり - -