## com.google.javascript.jscomp
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:
  Serialized Form

Nested Class Summary

Nested classes/interfaces inherited from interface com.google.javascript.jscomp.CodingConvention
`CodingConvention.AssertionFunctionSpec, CodingConvention.Bind, CodingConvention.DelegateRelationship, CodingConvention.ObjectLiteralCast, CodingConvention.SubclassRelationship, CodingConvention.SubclassType`

Field Summary

Fields inherited from class com.google.javascript.jscomp.CodingConventions.Proxy
`nextConvention`

Constructor Summary
`GoogleCodingConvention()` By default, decorate the ClosureCodingConvention.
`GoogleCodingConvention(CodingConvention convention)` Decorates a wrapped CodingConvention.

Method Summary
`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.
`boolean` | `isConstantKey(String name)` 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.
`boolean` | `isExported(String name, boolean local)` Checks whether a global variable or function name should be treated as exported, or externally referenceable.
`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.
`boolean` | `isPrivate(String name)` Checks whether a name should be considered private.
`boolean` | `isValidEnumKey(String key)` This checks that a given `key` may be used as a key for an enum.
`boolean` | `isVarArgsParameter(Node parameter)` This checks whether a given parameter should be treated as a marker for a variable argument list function.

Methods inherited from class com.google.javascript.jscomp.CodingConventions.Proxy

`applyDelegateRelationship, applySingletonGetter, applySubclassRelationship, checkForCallingConventionDefiningCalls, defineDelegateProxyPrototypeProperties, describeFunctionBind, extractClassNameIfProvide, extractClassNameIfRequire, getAbstractMethodName, getAssertionFunctions, getClassesDefinedByCall, getDelegateRelationship, getDelegateSuperclassName, getExportPropertyFunction, getExportSymbolFunction, getGlobalObject, getObjectLiteralCast, getSingletonGetterClassName, identifyTypeDeclarationCall, isExported, isPropertyTestFunction, isPrototypeAlias, isSuperClassReference`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### GoogleCodingConvention

    public GoogleCodingConvention()

  By default, decorate the ClosureCodingConvention.

### GoogleCodingConvention

    public GoogleCodingConvention(CodingConvention convention)

  Decorates a wrapped CodingConvention.

Method Detail

### 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.