@Mari, Can you work on all feedback and compile a wiki page?
On Tue, Sep 16, 2014 at 1:11 PM, Akila Ravihansa Perera <raviha...@wso2.com> wrote: > Hi, > > +1 for using this as the common guideline. > > IMO, we should add coding styles as well. It will make the code more > readable and easy to understand. We might be able to get some idea > from Google Java style in [1]. Another style from Apache ACE project > in [2]. > > [1] https://google-styleguide.googlecode.com/svn/trunk/javaguide.html > [2] https://ace.apache.org/dev-doc/coding-standards.html > > Thanks. > > On Tue, Sep 16, 2014 at 12:28 PM, Sajith Kariyawasam <saj...@wso2.com> > wrote: > > You can access Sonar dashboard for Stratos in [1], Imesh shared this in > the > > thread [Discuss] Setting up Sonar for Stratos > > [1] > > > https://analysis.apache.org/dashboard/index/org.apache.stratos:stratos-parent > > > > On Tue, Sep 16, 2014 at 12:15 PM, Sajith Kariyawasam <saj...@wso2.com> > > wrote: > >> > >> Hi all, > >> > >> I think these guidelines should align with the Sonar rules which are > >> already integrated with Stratos, or decide on a set of guidelines and > change > >> the Sonar rules accordingly. > >> > >> Also, IMO we should use Sonar plugin in IDE s, rather than using > Findbugs > >> / PMD etc individually.. > >> [1] > >> > http://stackoverflow.com/questions/5479019/is-sonar-replacement-for-checkstyle-pmd-findbugs > >> > >> I assume that we can use Sonar even for managing code review stuff as > well > >> [2] > >> [2] http://www.sonarqube.org/effective-code-review-with-sonar/ > >> > >> Thanks, > >> Sajith > >> > >> On Tue, Sep 16, 2014 at 11:52 AM, Lakmal Warusawithana <lak...@wso2.com > > > >> wrote: > >>> > >>> Hi, > >>> > >>> This is the guideline we used in WSO2, shall we have a look and see > >>> whether we can use the same. Please share your thoughts. After we > finalised > >>> will put this into wiki and make it as common guide line. > >>> > >>> Comments > >>> > >>> Doc comments > >>> > >>> All classes and all methods/functions MUST have doc comments > >>> > >>> Explain each parameter, return type and assumptions made > >>> > >>> Line comments > >>> > >>> In case you have complex logic, explain any genius logic, rationale for > >>> doing something > >>> > >>> > >>> Logging > >>> > >>> Log then and there > >>> > >>> With ample local information and context > >>> > >>> Remember logs are for users. Make them meaningful, readable and also > make > >>> sure you spell check (ispell) > >>> > >>> Use correct log level, e.g do not log errors as warnings or vice versa > >>> > >>> Remember to log the error before throwing an exception > >>> > >>> > >>> Logic > >>> > >>> Make your genius code readable > >>> > >>> Use meaningful variable names. Remember, compilers can handle long > >>> variable names > >>> > >>> ________________________________ > >>> > >>> Variables declared in locality, as an when required > >>> > >>> The underscore character should be used only when declaring constants, > >>> and should not be used anywhere else in Java code > >>> > >>> Make sure the function/method names are self descriptive > >>> > >>> One should be able explain a function/method using a single sentence > >>> without conjunctions (that is no and/or in description) > >>> > >>> Have proper separation of concerns > >>> > >>> Check if you do multiple things in a function > >>> > >>> Too many parameters are smelly, indicates that something is wrong > >>> > >>> Use variables to capture status and return at the end whenever > possible > >>> > >>> Avoid status returning from multiple places, that makes code less > >>> readable > >>> > >>> Be consistent in managing state e.g. Initialize to FALSE and set to > TRUE > >>> everywhere else > >>> > >>> Where does that if block end, or what block did you end right now? > Have a > >>> comment at end of a block at } > >>> > >>> Use if statements rationally, ensure the behavior is homogeneous > >>> > >>> In case of returning a collection, must return an empty collection and > >>> not null (or NULL) > >>> > >>> Do not use interfaces to declare constants. Use a final class with > public > >>> static final attributes and a private constructor. > >>> > >>> Always use braces to surround code blocks ({}) even if it is a single > >>> line. > >>> > >>> Break code into multiple lines if it exceeds 100 columns > >>> > >>> Align method parameters, exception etc. in order to improve > readability. > >>> Use the settings in your IDE to do this. > >>> > >>> Be sure to define, who should catch an exception when throwing one > >>> > >>> Be sure to catch those exceptions that you can handle > >>> > >>> Do not use string literals in the code, instead declare constants and > use > >>> them, constant names should be self descriptive > >>> > >>> Use constants already defined whenever possible, check to see if > someone > >>> already declared one, specially in base libs, like Axis2 > >>> > >>> > >>> Java Specific > >>> > >>> Coding conventions - > >>> http://www.oracle.com/technetwork/java/codeconv-138413.html > >>> > >>> Only exception is line length, we use 100 > >>> > >>> Run FindBugs on your code - http://findbugs.sourceforge.net/ > >>> > >>> Use CONSTANT_VALUE.equals(variable_name) to avoid null pointer > exceptions > >>> > >>> IMPORTANT > >>> > >>> You should run FindBugs on your new code or modified code, and commit > >>> only after fixing any bugs reported by FindBugs. It is recommended to > use > >>> the IntellijIDEA (FindBugs-IDEA) or Eclipse FindBugs plugin to do this. > >>> > >>> > >>> > >>> -- > >>> Lakmal Warusawithana > >>> Vice President, Apache Stratos > >>> Director - Cloud Architecture; WSO2 Inc. > >>> Mobile : +94714289692 > >>> Blog : http://lakmalsview.blogspot.com/ > >>> > >> > >> > >> > >> -- > >> Sajith Kariyawasam > >> Committer and PMC member, Apache Stratos, > >> WSO2 Inc., http://wso2.com > >> AMIE (SL) > >> Mobile: +94772269575 > >> > > > > > > > > -- > > Sajith Kariyawasam > > Committer and PMC member, Apache Stratos, > > WSO2 Inc., http://wso2.com > > AMIE (SL) > > Mobile: +94772269575 > > > > > > -- > Akila Ravihansa Perera > Software Engineer, WSO2 > > Blog: http://ravihansa3000.blogspot.com > -- Lakmal Warusawithana Vice President, Apache Stratos Director - Cloud Architecture; WSO2 Inc. Mobile : +94714289692 Blog : http://lakmalsview.blogspot.com/