[WebODF] coding rules for types

Friedrich W. H. Kossebau friedrich at kogmbh.com
Mon Feb 10 13:49:49 CET 2014


Am Montag, 10. Februar 2014, 13:32:39 schrieb Jos van den Oever:
> Hi all,
> 
> In our codebase we use some annotations differently. This can be
> confusing for new developers that are not too familiar with Closure
> Compiler annotations.

It's confusing for some old developers (like me) as well :)

> So I'm proposing some rules that we'll try to enforce by linting.
> 
> 1) For the types 'string', 'number', 'boolean' and 'function', the '!'
> shall not be written explicitly.
> 
> Rationale: Prepending a '!' to a type means that it is not null. For esp
> string, number and boolean, it's weird to have the null value. These
> types occur a lot and making the '!' explicit would mean a lot of '!' in
> the code.
> In an Object with string keys, the '!' looks especially silly:
>    Object.<!string,!Object>
> (Using undefined or null as a key will change it to 'undefined' and
> 'null' respectively).

Meh, I would rather prefer the opposite, have all kind of types be handled in 
the same way. So always writing explicitely the if-nullable state.

Rationale: Making a distinction between the different kind of types only 
complicates things. Just see how it took us more up to a year to get it 
finally. Also would be consistent with the rules 2) to 4) where we also write 
explicitely the defaults.
 
> 2) For the types 'Object', 'Array' and 'Function', the '?' shall be
> written explicitly.
> 
> Null pointers can be a problem. The compiler checks the nullness when
> passing an object but not when accessing a member. Keeping awareness of
> nullness high is good.

+1

> 3) Objects will always explicitly have 'string' as the key. So each
> Object in a type definition starts with 'Object.<string,'.
> 
> Rationale: Any other type makes no sense, because in JS the key type is
> always a string anyway.

+1

> 4) Each non-constructor function must have a @return declaration.

+1

Thanks for pushing for these coding rules, really time
Friedrich
-- 
Friedrich W. H. Kossebau // KO GmbH
http://kogmbh.com/legal/


More information about the WebODF mailing list