[or-cvs] r17703: {tor} Say more about comment conventions in doc/HACKING (tor/trunk/doc)
nickm at seul.org
nickm at seul.org
Fri Dec 19 18:51:41 UTC 2008
Author: nickm
Date: 2008-12-19 13:51:40 -0500 (Fri, 19 Dec 2008)
New Revision: 17703
Modified:
tor/trunk/doc/HACKING
Log:
Say more about comment conventions in doc/HACKING
Modified: tor/trunk/doc/HACKING
===================================================================
--- tor/trunk/doc/HACKING 2008-12-19 18:51:35 UTC (rev 17702)
+++ tor/trunk/doc/HACKING 2008-12-19 18:51:40 UTC (rev 17703)
@@ -1,9 +1,12 @@
-0. The buildbot.
+0. Useful tools.
+0.0 The buildbot.
+
http://tor-buildbot.freehaven.net:8010/
- - Down for unknown reasons, ioerror will look into this.
+ - Down because nickm isn't running services at home any more. ioerror says
+ he will resurrect it.
0.1. Useful command-lines that are non-trivial to reproduce but can
help with tracking bugs or leaks.
@@ -103,8 +106,11 @@
Use tor_malloc, tor_free, tor_strdup, and tor_gettimeofday instead of their
generic equivalents. (They always succeed or exit.)
- You can get a full list of the compatibility functions that Tor provides
- by looking through src/common/util.h and src/common/compat.h.
+ You can get a full list of the compatibility functions that Tor provides by
+ looking through src/common/util.h and src/common/compat.h. You can see the
+ available containers in src/common/containers.h. You should probably
+ familiarize yourself with these modules before you write too much code,
+ or else you'll wind up reinventing the wheel.
Use 'INLINE' instead of 'inline', so that we work properly on Windows.
@@ -126,6 +132,11 @@
(e.g. buffer_clear, buffer_resize); functions that return booleans should
have predicate names (e.g. buffer_is_empty, buffer_needs_resizing).
+ If you find that you have four or more possible return code values, it's
+ probably time to create an enum. If you find that you are passing three or
+ more flags to a function, it's probably time to create a flags argument
+ that takes a bitfield.
+
1.3. What To Optimize
Don't optimize anything if it's not in the critical path. Right now,
@@ -203,6 +214,38 @@
6. See the Doxygen manual for more information; this summary just
scratches the surface.
+1.5.1. Doxygen comment conventions
+
+ Say what functions do as a series of one or more imperative sentences, as
+ though you were telling somebody how to be the function. In other words,
+ DO NOT say:
+
+ /** The strtol function parses a number.
+ *
+ * nptr -- the string to parse. It can include whitespace.
+ * endptr -- a string pointer to hold the first thing that is not part
+ * of the number, if present.
+ * base -- the numeric base.
+ * returns: the resulting number.
+ */
+ long strtol(const char *nptr, char **nptr, int base);
+
+ Instead, please DO say:
+
+ /** Parse a number in radix <b>base</b> from the string <b>nptr</b>,
+ * and return the result. Skip all leading whitespace. If
+ * <b>endptr</b> is not NULL, set *<b>endptr</b> to the first character
+ * after the number parsed.
+ **/
+ long strtol(const char *nptr, char **nptr, int base);
+
+ Doxygen comments are the contract in our abstraction-by-contract world: if
+ the functions that call your function rely on it doing something, then your
+ function should mention that it does that something in the documentation.
+ If you rely on a function doing something beyond what is in its
+ documentation, then you should watch out, or it might do something else
+ later.
+
2. Code notes
2.1. Dataflows
@@ -258,3 +301,4 @@
libevent's version because it is not yet in the versions of libevent
all our users have.) DNS replies are read in nameserver_read();
DNS queries are read in server_port_read().
+
More information about the tor-commits
mailing list