File: CodingStyle.txt

package info (click to toggle)
gnome-boxes 3.14.2-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 16,640 kB
  • ctags: 18,130
  • sloc: ansic: 166,927; sh: 11,537; makefile: 622; xml: 96
file content (103 lines) | stat: -rw-r--r-- 3,027 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
GNOME Boxes Coding Style
========================

The coding style to respect in this project is very similar to most
Vala projects. In particular, the following rules are largely adapted
from the Rygel Coding Style.

 * 4-spaces (and not tabs) for indentation.

 * ''Prefer'' lines of less than <= 120 columns

 * 1-space between function name and braces (both calls and signature
   declarations)

 * Avoid the use of 'this' keyword:

 * If function signature/call fits in a single line, do not break it
   into multiple lines.

 * For methods/functions that take variable argument tuples, all the
   first elements of tuples are indented normally with the subsequent
   elements of each tuple indented 4-space more. Like this:

        action.get ("ObjectID",
                        typeof (string),
                        out this.object_id,
                    "Filter",
                        typeof (string),
                        out this.filter,
                    "StartingIndex",
                        typeof (uint),
                        out this.index,
                    "RequestedCount",
                        typeof (uint),
                        out this.requested_count,
                    "SortCriteria",
                        typeof (string),
                        out this.sort_criteria);

 * ''Prefer'' descriptive names over abbreviations (unless well-known)
   & shortening of names. E.g discoverer over disco.

 * Use 'var' in variable declarations wherever possible.

 * Use 'as' to cast wherever possible.

 * Single statments inside if/else must not be enclosed by '{}'.

 * The more you provide docs in comments, but at the same time avoid
   over-documenting. Here is an example of useless comment:

   // Fetch the document
   fetch_the_document ();

 * Each class should go in a separate .vala file & named according to
   the class in it. E.g Boxes.SpiceDisplay class should go under
   spice-display.vala.

 * Avoid putting more than 3 'using' statements in each .vala file. If
   you feel you need to use more, perhaps you should consider
   refactoring (Move some of the code to a separate class).

 * Declare the namespace(s) of the class/errordomain with the
   class/errordomain itself. Like this:

   private class Boxes.Hello {
   ...
   };

 * Prefer 'foreach' over 'for'.

 * Add a newline to break the code in logical pieces

 * Add a newline before each return, throw, break etc. if it
   is not the only statement in that block

    if (condition_applies ()) {
      do_something ();

      return false;
    }

    if (other_condition_applies ())
      return true;

   Except for the break in a switch:

    switch (val) {
    case 1:
        debug ("case 1");
        do_one ();
        break;

    default:
        ...
    }

 * If a function returns several equally important values, they should
   all be given as out arguments. IOW, prefer this:

     void get_a_and_b (out string a, out string b)

   rather than the un-even, string get_a_and_b (out b)