Skip to content

Coding conventions

Andrew Binstock edited this page Jul 17, 2024 · 5 revisions

This page contains coding conventions used in the Jacobin code base. Note that many of these conventions grew organically, as needs became clarified. That means that some early code might not strictly follow the conventions. Bringing such code to our attention is a welcome contribution.

error messages

The convention for error messages is to create them using fmt.Sprintf() and then either return them, return them wrapped in an error, or display them. The string created by fmt. Sprintf is always called errMsg.

gfunctions

The error block returned by gfunctions contains two fields:

  • The numeric exception type (e.g. the integer representing IOException) maps to an element in a string table ("java.lang.IOException").
  • A descriptive error text (string) that describes the error condition, annotated when possible, with supplied parameter values and/or derived variable values. The gfunction class name, method name, and method type are joined included in the error block information to produce the complete error message.

gfunctions vs. native functions

gfunctions are Java library functions implemented in golang. Native functions are JDK functions written by the JDK team in a native language, generally C++. Native functions are identified in Java by use of the native keyword.

golang vs. go

Wherever reasonable, we use golang to refer to the language, rather than go. This allows us to search the code base for instances of the go keyword more efficiently.