Gerald Brose gerald.brose@acm.org JacORB Coding Conventions ========================= JacORB uses the Apache Jakarta Coding Style, which is based on the Sun coding conventions for Java. Please see http://jakarta.apache.org/turbine/common/code-standards.html for reference. (Re-formatting): =============== The astyle tool (http://astyle.sourceforge.net/) can be used to format source code. Note, however, that astyle will not *remove* whitespace, e.g., within brackets. You can use the following lines as your .astylerc file: --- begin .astylerc file ---- # # .astylerc file for JacORB, meant to reflect Apache Java Coding # conventions # # default parsing is of java files mode=java # brackets should be attached to pre-bracket lines brackets=attach # set 4 spaces per indent indent=spaces=4 # indent switch blocks indent-switches # suffix of original files should be .orig suffix=.orig # Break brackets from their pre-block statements (i.e. ANSI C, C++ style) brackets=break # Insert space padding around operators only: pad=oper # Convert tabs to spaces. convert-tabs --- end .astylerc file ---- To use astyle from within Emacs, make sure astyle is in your PATH. Then add the following to your .emacs file (found on the 'Net): (defvar astyle-command "astyle") (defun astyle-region (start end) "Run astyle on region, formatting it in a pleasant way." (interactive "r") (save-excursion (shell-command-on-region start end astyle-command nil t) (indent-region start end nil))) (defun astyle-buffer () "Run astyle on whole buffer, formatting it in a pleasant way." (interactive) (save-excursion (astyle-region (point-min) (point-max)))) (add-hook 'c-mode-common-hook '(lambda () (define-key c-mode-map "\C-cr" 'astyle-region) (define-key c-mode-map "\C-cb" 'astyle-buffer) (define-key c++-mode-map "\C-cr" 'astyle-region) (define-key c++-mode-map "\C-cb" 'astyle-buffer) (define-key jde-mode-map "\C-cr" 'astyle-region) (define-key jde-mode-map "\C-cb" 'astyle-buffer))) General rules ============= 1) Use whitespace to make the text more readable. a) indentation: 4 spaces, no tabs! b) Open curly brackets on a *new* line without further indentation if (x) { } c) always write the body of an if-, for-, while- ... statmement on a new line, never on the same! for (;;) { ... } d) write: x = y, not: x=y e) Include extra spaces around operators, For example: a = b * c f) No spaces between method names and opening brackets, e.g: a.method(arg1); public int myMethod(int param 1, ...) g) break lines that get too long (around column 100) h) insert empty lines freely wherever you think it helps. 2) Comments: - as much as you can: javadoc public and package local methods and fields!!! javadoc private and protected ones also - add javadoc wherever you modify code (and you know what you are doing ;-) ) 3) Place the JacORB LGPL license header on all files. 4) Tests a) When fixing a bug reference the bug number in the CVS commit. b) Either add to an existing test or add to the org.jacorb.test.bugs.bugXXX structure. c) Reference the test and code in the bugzilla entry. d) Ensure the test is javadoced including the reason for the test. e) When modifying code in the main tree, if there is missing javadoc in the function you are changing fix that as well. [ More suggestions? ... ]