Mercurial > repos > melissacline > ucsc_xena_platform
comparison python-daemon-2.0.5/doc/hacking.txt @ 33:7ceb967147c3
start xena with no gui
add library files
author | jingchunzhu <jingchunzhu@gmail.com> |
---|---|
date | Wed, 22 Jul 2015 13:24:44 -0700 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
32:63b1ba1e3424 | 33:7ceb967147c3 |
---|---|
1 Developer's guide | |
2 ################# | |
3 | |
4 :Author: Ben Finney <ben+python@benfinney.id.au> | |
5 :Updated: 2014-11-28 | |
6 | |
7 | |
8 Project layout | |
9 ============== | |
10 | |
11 :: | |
12 | |
13 ./ Top level of source tree | |
14 doc/ Project documentation | |
15 bin/ Executable programs | |
16 daemon/ Main ‘daemon’ library | |
17 test/ Unit tests | |
18 | |
19 | |
20 Code style | |
21 ========== | |
22 | |
23 Python | |
24 ------ | |
25 | |
26 All Python code should conform to the guidelines in PEP8_. In | |
27 particular: | |
28 | |
29 * Indent each level using 4 spaces (``U+0020 SPACE``), and no TABs | |
30 (``U+0008 CHARACTER TABULATION``). | |
31 | |
32 * Name modules in lower case, ``multiplewordslikethis``. | |
33 | |
34 * Name classes in title case, ``MultipleWordsLikeThis``. | |
35 | |
36 * Name functions, instances and other variables in lower case, | |
37 ``multiple_words_like_this``. | |
38 | |
39 * Every module, class, and function has a Python doc string explaining | |
40 its purpose and API. | |
41 | |
42 *Exception*: Functions whose purpose and API are mandated by Python | |
43 itself (dunder-named methods) do not need a doc string. | |
44 | |
45 * Doc strings are written as triple-quoted strings. | |
46 | |
47 * The text of the doc string is marked up with reStructuredText. | |
48 | |
49 * The first line is a one-line synopsis of the object. This summary | |
50 line appears on the same line as the opening triple-quote, | |
51 separated by a single space. | |
52 | |
53 * Further lines, if needed, are separated from the first by one | |
54 blank line. | |
55 | |
56 * The synopsis is separated by one space from the opening | |
57 triple-quote; this causes it to appear four columns past the | |
58 beginning of the line. All subsequent lines are indented at least | |
59 four columns also. | |
60 | |
61 * The synopsis is followed by a reStructuredText field list. The | |
62 field names are: “param foo” for each parameter (where “foo” is | |
63 the parameter name), and “return” for the return value. The field | |
64 values describe the purpose of each. | |
65 | |
66 * The closing triple-quote appears on a separate line. | |
67 | |
68 Example:: | |
69 | |
70 def frobnicate(spam, algorithm="dv"): | |
71 """ Perform frobnication on ``spam``. | |
72 | |
73 :param spam: A travortionate (as a sequence of strings). | |
74 :param algorithm: The name of the algorithm to use for | |
75 frobnicating the travortionate. | |
76 :return: The frobnicated travortionate, if it is | |
77 non-empty; otherwise None. | |
78 | |
79 The frobnication is done by the Dietzel-Venkman algorithm, | |
80 and optimises for the case where ``spam`` is freebled and | |
81 agglutinative. | |
82 | |
83 """ | |
84 spagnify(spam) | |
85 # … | |
86 | |
87 * All ``import`` statements appear at the top of the module. | |
88 | |
89 * Each ``import`` statement imports a single module, or multiple names | |
90 from a single module. | |
91 | |
92 Example:: | |
93 | |
94 import sys | |
95 import os | |
96 from spam import foo, bar, baz | |
97 | |
98 .. _PEP8: http://www.python.org/dev/peps/pep-0008/ | |
99 | |
100 Additional style guidelines: | |
101 | |
102 * All text files (including program code) are encoded in UTF-8. | |
103 | |
104 * A page break (``U+000C FORM FEED``) whitespace character is used | |
105 within a module to break up semantically separate areas of the | |
106 module. | |
107 | |
108 * Editor hints for Emacs and Vim appear in a comment block at the | |
109 file's end:: | |
110 | |
111 | |
112 # Local variables: | |
113 # coding: utf-8 | |
114 # mode: python | |
115 # End: | |
116 # vim: fileencoding=utf-8 filetype=python : | |
117 | |
118 | |
119 Unit tests | |
120 ========== | |
121 | |
122 All code should aim for 100% coverage by unit tests. New code, or | |
123 changes to existing code, will only be considered for inclusion in the | |
124 development tree when accompanied by corresponding additions or | |
125 changes to the unit tests. | |
126 | |
127 Test-driven development | |
128 ----------------------- | |
129 | |
130 Where possible, practice test-driven development to implement program | |
131 code. | |
132 | |
133 * During a development session, maintain a separate window or terminal | |
134 with the unit test suite for the project running continuously, or | |
135 automatically every few seconds. | |
136 | |
137 * Any time a test is failing, the only valid change is to make all | |
138 tests pass. | |
139 | |
140 * Develop new interface features (changes to the program unit's | |
141 behaviour) only when all current tests pass. | |
142 | |
143 * Refactor as needed, but only when all tests pass. | |
144 | |
145 * Refactoring is any change to the code which does not alter its | |
146 interface or expected behaviour, such as performance | |
147 optimisations, readability improvements, modularisation | |
148 improvements etc. | |
149 | |
150 * Develop new or changed program behaviour by: | |
151 | |
152 * *First* write a single, specific test case for that new behaviour, | |
153 then watch the test fail in the absence of the desired behaviour. | |
154 | |
155 * Implement the minimum necessary change to satisfy the failing | |
156 test. Continue until all tests pass again, then stop making | |
157 functional changes. | |
158 | |
159 * Once all tests (including the new test) pass, consider refactoring | |
160 the code and the tests immediately, then ensure all the tests pass | |
161 again after any changes. | |
162 | |
163 * Iterate for each incremental change in interface or behaviour. | |
164 | |
165 Test-driven development is not absolutely necessary, but is the | |
166 simplest, most direct way to generate the kind of program changes | |
167 accompanied by unit tests that are necessary for inclusion in the | |
168 project. | |
169 | |
170 | |
171 .. | |
172 Local variables: | |
173 coding: utf-8 | |
174 mode: rst | |
175 time-stamp-format: "%:y-%02m-%02d" | |
176 time-stamp-start: "^:Updated:[ ]+" | |
177 time-stamp-end: "$" | |
178 time-stamp-line-limit: 20 | |
179 End: | |
180 vim: fileencoding=utf-8 filetype=rst : |