Class GoogleCodingConvention

java.lang.Object
com.google.javascript.jscomp.CodingConventions.Proxy
com.google.javascript.jscomp.GoogleCodingConvention
All Implemented Interfaces:
CodingConvention, Serializable

public class GoogleCodingConvention extends CodingConventions.Proxy
This describes the Google-specific JavaScript coding conventions. Within Google, variable names are semantically significant.
See Also:
  • Constructor Details

    • GoogleCodingConvention

      public GoogleCodingConvention()
      By default, decorate the ClosureCodingConvention.
    • GoogleCodingConvention

      public GoogleCodingConvention(CodingConvention convention)
      Decorates a wrapped CodingConvention.
  • Method Details

    • isConstant

      public boolean isConstant(String name)
      This checks whether a given variable name, such as a name in all-caps should be treated as if it had the @const annotation.

      This enforces the Google const name convention, that the first character after the last $ must be an upper-case letter and all subsequent letters must be upper case. The name must be at least 2 characters long.

      Examples:

            aaa          Not constant - lower-case letters in the name
            A            Not constant - too short
            goog$A       Constant - letters after the $ are upper-case.
            AA17         Constant - digits can appear after the first letter
            goog$7A      Not constant - first character after the $ must be
                         upper case.
            $A           Constant - doesn't have to be anything in front of the $
       
      Specified by:
      isConstant in interface CodingConvention
      Overrides:
      isConstant in class CodingConventions.Proxy
      Parameters:
      name - potentially constant variable name
      Returns:
      true if the name should be treated as a constant.
    • isConstantKey

      public boolean isConstantKey(String name)
      Description copied from interface: CodingConvention
      This checks whether a given key of an object literal, such as a name in all-caps should be treated as if it had the @const annotation.
      Specified by:
      isConstantKey in interface CodingConvention
      Overrides:
      isConstantKey in class CodingConventions.Proxy
    • isValidEnumKey

      public boolean isValidEnumKey(String key)
      This checks that a given key may be used as a key for an enum.

      This enforces Google's convention about enum key names. They must match the regular expression [A-Z0-9][A-Z0-9_]*.

      Examples:

      • A
      • 213
      • FOO_BAR
      Specified by:
      isValidEnumKey in interface CodingConvention
      Overrides:
      isValidEnumKey in class CodingConventions.Proxy
      Parameters:
      key - the potential key to an enum
      Returns:
      true if the key may be used as an enum key, false otherwise
    • isOptionalParameter

      public boolean isOptionalParameter(Node parameter)
      This checks whether a given parameter name should be treated as an optional parameter as far as type checking or function call arg count checking is concerned. Note that an optional function parameter may be declared as a simple type and is automatically converted to a union of the declared type and Undefined.

      In Google code, parameter names beginning with opt_ are treated as optional arguments.

      Specified by:
      isOptionalParameter in interface CodingConvention
      Overrides:
      isOptionalParameter in class CodingConventions.Proxy
      Parameters:
      parameter - The parameter's node.
      Returns:
      true if the parameter should be treated as an optional parameter.
    • isVarArgsParameter

      public boolean isVarArgsParameter(Node parameter)
      Description copied from interface: CodingConvention
      This checks whether a given parameter should be treated as a marker for a variable argument list function. A VarArgs parameter must be the last parameter in a function declaration.
      Specified by:
      isVarArgsParameter in interface CodingConvention
      Overrides:
      isVarArgsParameter in class CodingConventions.Proxy
      Parameters:
      parameter - The parameter's node.
      Returns:
      true if the parameter should be treated as a variable length parameter.
    • isExported

      public boolean isExported(String name, boolean local)
      Checks whether a global variable or function name should be treated as exported, or externally referenceable.

      In Google code, any global name starting with an underscore is considered exported.

      Specified by:
      isExported in interface CodingConvention
      Overrides:
      isExported in class CodingConventions.Proxy
      Parameters:
      name - A global variable or function name.
      local - true if the name is a local variable.
      Returns:
      true if the name should be considered exported.
    • isPrivate

      public boolean isPrivate(String name)
      Checks whether a name should be considered private. Private global variables and functions can only be referenced within the source file in which they are declared. Private properties and methods should only be accessed by the class that defines them.

      In Google code, private names end with an underscore, and exported names are never considered private (see isExported(java.lang.String, boolean)).

      Specified by:
      isPrivate in interface CodingConvention
      Overrides:
      isPrivate in class CodingConventions.Proxy
      Parameters:
      name - The name of a global variable or function, or a method or property.
      Returns:
      true if the name should be considered private.