com.google.javascript.jscomp
Class GoogleCodingConvention

java.lang.Object
  extended by com.google.javascript.jscomp.CodingConventions.Proxy
      extended by 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:

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.