Octave style guide: Difference between revisions

From Octave
Jump to navigation Jump to search
(Start page describing our style guide for Octave code.)
 
(→‎Formatting: add section about whitespace ported from the manual)
Line 21: Line 21:
We use spaces for indentation. Absolutely do not use tabs in your code.
We use spaces for indentation. Absolutely do not use tabs in your code.
You should probably set your editor to emit spaces when you hit the tab key.
You should probably set your editor to emit spaces when you hit the tab key.
=== Whitespace ===
When calling functions, put spaces after commas and before the calling
parentheses, like this:
<pre>x = max (sin (y+3), 2);</pre>
An exception are matrix or cell constructors:
<pre>
[sin(x), cos(x)]
{sin(x), cos(x)}
</pre>
Here, putting spaces after {{codeline|sin}}}, {{codeline|cos}}} would result in a
parse error.
For indexing expressions, do ''not'' put a space after the
identifier (this differentiates indexing and function calls nicely).
The space after a comma is not necessary if index expressions are simple,
i.e., you may write
<pre>A(:,i,j)</pre>
but
<pre>A([1:i-1;i+1:n], XI(:,2:n-1))</pre>
When constructing matrices, prefer using the comma rather than the space to
distinguish between columns.
<pre>
  M = [1, 2, 3
      4, 5, 6];
</pre>
However, if the matrix is large or the indentation makes it clear the comma
may be dropped.
<pre>
  prices = [ 1.01  2.02  3.03
            44.04 55.05  6.06];
</pre>


== Naming ==
== Naming ==

Revision as of 15:42, 21 August 2016

A lot of GNU Octave is written in the Octave language itself. This document details the Octave style used by the GNU Octave project.

Being part of the GNU project, Octave inherits the GNU coding standards. However, those were written with C in mind and can't always apply to Octave code.

See also the GNU Octave C++ style guide.

Formatting

Line Length

Keep the length of source lines to 79 characters or less, for maximum readability in the widest range of environments. This is inherited from the GNU Coding Standards.

Indentation

Use only spaces, and indent 2 spaces at a time.

We use spaces for indentation. Absolutely do not use tabs in your code. You should probably set your editor to emit spaces when you hit the tab key.

Whitespace

When calling functions, put spaces after commas and before the calling parentheses, like this:

x = max (sin (y+3), 2);

An exception are matrix or cell constructors:

[sin(x), cos(x)]
{sin(x), cos(x)}

Here, putting spaces after sin}, cos} would result in a parse error.

For indexing expressions, do not put a space after the identifier (this differentiates indexing and function calls nicely). The space after a comma is not necessary if index expressions are simple, i.e., you may write

A(:,i,j)

but

A([1:i-1;i+1:n], XI(:,2:n-1))

When constructing matrices, prefer using the comma rather than the space to distinguish between columns.

  M = [1, 2, 3
       4, 5, 6];

However, if the matrix is large or the indentation makes it clear the comma may be dropped.

  prices = [ 1.01  2.02  3.03
            44.04 55.05  6.06];

Naming

General naming functions

Function names

For most public functions we are limited by Matlab compatibility. Use whatever name Matlab choose.

For functions that are not present in Matlab favour the use of underscores. For example, base64_decode, common_size, or compare_versions. There are exceptions to this:

Matching C functions
If the function exists elsewhere with a common name, use it. For example, dup2, waitpid, printf, argv, or getopt.
Matching similar functions
If there are similarly named functions, consider using same style. For example, fftconvn and histthresh, match the naming of fftconv2 and graythresh.

Variable names

Comments

# or %

Always use # to write comments.

Absolutely do not use %# or mix % and # in the same file.

Block and Inline comment

Use a single # for inline comments. Use double ## for block comments.

Commenting out code

Do not comment code out. If the code is no longer used, remove it. We use version control, we can always bring it back.