aboutsummaryrefslogtreecommitdiffhomepage
path: root/dev/doc/style.txt
blob: a8924ba65dc7fc78d72f3bb11532d5ad5a2f377a (plain)
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

<< L'uniformité du style est plus importante que le style lui-même. >>
(Kernigan & Pike, The Practice of Programming)

Mode Emacs
==========
   Tuareg, que l'on trouve ici :  http://www.prism.uvsq.fr/~acohen/tuareg/

   avec le réglage suivant :     (setq tuareg-in-indent 2)

Types récursifs et filtrages
============================
   Une barre de séparation y compris sur le premier constructeur

type t =
  | A 
  | B of machin

match expr with
  | A -> ...
  | B x -> ...

Remarque : à partir de la 8.2 environ, la tendance est à utiliser le
format suivant qui permet de limiter l'escalade d'indentation tout en
produisant un aspect visuel intéressant de bloc :

type t =
| A 
| B of machin

match expr with
| A -> ...
| B x -> ...

let f expr = match expr with
| A -> ...
| B x -> ...

let f expr = function
| A -> ...
| B x -> ...

Le deuxième cas est obtenu sous tuareg avec les réglages

  (setq tuareg-with-indent 0)
  (setq tuareg-function-indent 0)
  (setq tuareg-let-always-indent nil) /// notons que cette dernière est bien 
                                      /// pour les let mais pas pour les let-in

Conditionnelles
===============
  if condition then
    premier-cas
  else
    deuxieme-cas

  Si effets de bord dans les branches, utilisez begin ... end et non des
  parenthèses i.e.

  if condition then begin
    instr1;
    instr2
  end else begin
    instr3;
    instr4
  end
    
  Si la première branche lève une exception, évitez le else i.e.

    if condition then                     if condition then error "machin";
      error "machin"          ----->      suite
    else
      suite