X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=utils%2Fjalopy%2Fdocs%2Finspector.html;h=75d5bf32e2c04e281770965bb1257eb84d82b562;hb=b2f9a8d7bce642ff4011bc6d49e02bb0569fbb11;hp=62e881d00a389a5314ac057090aa096db49c30c2;hpb=6ab4ef1cc71ff9d28a21a139db69e4a8351a3fb5;p=jalview.git diff --git a/utils/jalopy/docs/inspector.html b/utils/jalopy/docs/inspector.html index 62e881d..75d5bf3 100755 --- a/utils/jalopy/docs/inspector.html +++ b/utils/jalopy/docs/inspector.html @@ -1,18 +1,187 @@ - + + + + 4.4. Code Inspector + + +
Overview • + Download • + Documentation • + Plug-ins • + Links • + Contact
Features | + History | + Manual | + FAQ | + Javadoc
+ This page generated: June 8 2004

4.4. Code Inspector

+Provides the configuration facility for the Jalopy Code Inspector. The Code Inspector is +able to inspect Java source files for naming convention violations and possible code +weaknesses. +

4.4.1. General

+Lets you control the general Code Inspector settings. +

4.4.1.1. General

  • +Enable +

    +Lets you enable or disable the Code Inspector as a whole. +

4.4.1.2. Tips

+Lets you selectively choose what actions should be performed during inspection. Moving the +mouse pointer onto a checkbox displays a minimalistic tooltip after a short delay. +

  • +Tip 1 - Don't substitute another type for Object in the equals declaration +

    +For a detailed discussion see Effective Java [Bloch01], pp. 35. +

  • +Tip 2 - Object the general contract when overriding equals +

    +For a detailed discussion see Effective Java [Bloch01], pp. 25. +

  • +Tip 3 - Always override hashCode when you override equals +

    +For a detailed discussion see Effective Java [Bloch01], pp. 36. +

  • +Tip 4 - Always override equals when you override hashCode +

  • +Tip 5 - Always override toString +

    +For a detailed discussion see Effective Java [Bloch01], pp. 42. +

  • +Tip 6 - Use interfaces only to define types +

    +For a detailed discussion see Effective Java [Bloch01], pp. 89. +

  • +Tip 7 - Replace structures with classes +

    +For a detailed discussion see Effective Java [Bloch01], pp. 97. +

  • +Tip 8 - Return zero-length arrays, not nulls +

    +For a detailed discussion see Effective Java [Bloch01], pp. 134. +

  • +Tip 9 - Adhere to generally accepted naming conventions +

    +For a detailed discussion see Effective Java [Bloch01], pp. 165. +

  • +Tip 10 - Refer to objects by their interfaces +

    +For a detailed discussion see Effective Java [Bloch01], pp. 156. +

  • +Tip 11 - Never declare that a method "throws Exception" +

    +For a detailed discussion see Effective Java [Bloch01], pp. 181. +

  • +Tip 12 - Never declare that a method "throws Throwable" +

    +For a detailed discussion see Effective Java [Bloch01], pp. 181. +

  • +Tip 13 - Don't ignore exceptions +

    +For a detailed discussion see Effective Java [Bloch01], pp. 187. +

  • +Tip 14 - Never invoke wait outside a loop +

    +For a detailed discussion see Effective Java [Bloch01], pp. 201. +

  • +Tip 15 - Avoid thread groups +

    +For a detailed discussion see Effective Java [Bloch01], pp. 211. +

  • +Tip 16 - Document collection types +

    +As long as there are no strong-typed collections (a.k.a. Java Generics support) available, +it is best to document the object type of the items hold by a collection. +

    Example 4.154. Collection comment

    +private static final List _favorableTypes = new ArrayList(20); // List of <String>
    +

  • +Tip 17 - Adhere to naming convention for collection types +

    +If you use comments to document the object type of collection items, you should conform to +a generally accepted naming convention. +

  • +Tip 18 - Avoid empty finally blocks +

    +Empty finally blocks are of no use and may indicate programmer errors. +

    Example 4.155. Empty finally block

    +Writer writer = null;
    +
    +try
    +{
    +    writer = new BufferedWriter(new FileWriter(file));
    +    write.write(data);
    +}
    +catch (IOException ex)
    +{
    +    System.err.println("file could not be written -- " + file);
    +}
    +finally
    +{
    +}
    +

    +The programmer certainly wanted to close the Writer in the +finally block to ensure that allocated system resources will be freed. +

  • +Tip 19 - Avoid variable shadowing +

    +Variable shadowing should be avoided on general principle, as it tends to be confusing. +

    +For more information about shadowing, see the +Java Developer Connection (JDC) Tech Tips, October 10, 2000 +( +http://developer.java.sun.com/developer/TechTips/2000/tt1010.html#tip2, subscription needed) or +section 6.3.2, "Obscured Declarations," section 7.5.2, +"Type-Import-on-Demand Declaration," section 8.4.6, "Inheritance, Overriding, and Hiding," +section 8.4.8.5, "Example: Invocation of Hidden Class Methods," and section 14.4.3, +"Shadowing of Names by Local variables" in "The Java Language Specification Second +Edition" by Gosling, Joy, Steele, and Bracha +(http://java.sun.com/docs/books/jls/). +

  • +Tip 20 - Add NOI18N comment for String literals +

    +Enabling this tip will cause warnings for all String literals without associated +/* NOI18N */ comment. +

    +Internationalizing Java applications is often done with nifty tools that use marker +comments to indicate that a given String literal should not be considered for localization. +Most tools (at least the ones I know of) use trailing single-line comments which may not +be very robust for processing with a formatting tool such as Jalopy. In contrast the author +uses a multi-line comment of the form /* NOI18N */ that gets directly +placed after a String literal and will therefore always stuck with it. +

    Example 4.156. $NON-NLS-1$ comment

    +FileDialog dialog = new FileDialog(this,
    +    ResourceBundle.getBundle(BUNDLE_NAME)
    +    .getString("BTN_SAVE_AS", FileDialog.SAVE); //$NON-NLS-1$
    +

    +This trailing comment could be easily moved away from its String literal during formatting +which would result in an unwanted notice on successive internationalization runs. +

    Example 4.157. $NON-NLS-1$ comment

    +FileDialog dialog =
    +    new FileDialog(this,
    +                   ResourceBundle.getBundle(BUNDLE_NAME).
    +                                  getString("BTN_SAVE_AS",
    +                   FileDialog.SAVE); //$NON-NLS-1$
    +

    Example 4.158. NOI18N comment

    +FileDialog dialog =
    +    new FileDialog(this,
    +                   ResourceBundle.getBundle(BUNDLE_NAME).
    +                                  getString("BTN_SAVE_AS" /* NOI18N */),
    +                   FileDialog.SAVE);
    +

to top