+1 for 120. On Thu, Oct 2, 2014 at 1:15 PM, Sajith Kariyawasam <saj...@wso2.com> wrote:
> +1 for 120, > > Also, introducing a Code Template can be useful, specially to maintain the > license headers etc > > Thanks, > Sajith > > On Thu, Oct 2, 2014 at 11:28 AM, Lahiru Sandaruwan <lahi...@wso2.com> > wrote: > >> +1 for 120. >> >> On Thu, Oct 2, 2014 at 11:19 AM, Isuru Perera <isu...@wso2.com> wrote: >> >>> Hi Nirmal, >>> >>> Sorry for the delay! I needed some time to go through the coding >>> guidelines in WSO2 and other Apache project. >>> >>> All, >>> >>> Since everyone agrees on 4 spaces, we will configure that accordingly. >>> My next concern is that 100 columns for a line is too short. >>> >>> Most of other projects use 120 columns for the line width. >>> >>> For example: >>> http://maven.apache.org/developers/conventions/code.html >>> https://airavata.apache.org/development/source.html >>> http://onami.apache.org/committers/codestyle.html >>> >>> However I think it's better if we can have at least 160 columns for a >>> line. >>> >>> There are some projects, which use 160 columns. :) >>> https://accumulo.apache.org/source.html >>> >>> So, WDYT? >>> >>> >>> On Wed, Oct 1, 2014 at 5:15 PM, Sajith Kariyawasam <saj...@wso2.com> >>> wrote: >>> >>>> I came up with the attached code format profile for Eclipse. This is >>>> based on the Eclipse (built in) profile, and I modified lineSplit from 80 >>>> to 100 and 4 Space indentation. Other default settings seems OK to me. >>>> >>>> Please share your thoughts >>>> >>>> Thanks, >>>> Sajith >>>> >>>> On Wed, Oct 1, 2014 at 4:47 PM, Nirmal Fernando <nirmal070...@gmail.com >>>> > wrote: >>>> >>>>> Guys, >>>>> >>>>> Did you all manage to create the formatter profiles? >>>>> >>>>> On Tue, Sep 23, 2014 at 11:59 AM, Nirmal Fernando < >>>>> nirmal070...@gmail.com> wrote: >>>>> >>>>>> Thanks for the reminder Imesh. I've created a Jira for this >>>>>> https://issues.apache.org/jira/browse/STRATOS-813 >>>>>> >>>>>> On Tue, Sep 23, 2014 at 10:31 AM, Imesh Gunaratne <im...@apache.org> >>>>>> wrote: >>>>>> >>>>>>> It's nice to see everyone is focusing on $subject. I just went >>>>>>> through the latest Sonar findings and seems like there are nearly 270 >>>>>>> critical issues: >>>>>>> >>>>>>> >>>>>>> https://analysis.apache.org/drilldown/issues/org.apache.stratos:stratos-parent?severity=CRITICAL >>>>>>> >>>>>>> We can go through the list and fix these issues, on the next build >>>>>>> Sonar listing will get updated. >>>>>>> >>>>>>> On Mon, Sep 22, 2014 at 7:32 AM, Akila Ravihansa Perera < >>>>>>> raviha...@wso2.com> wrote: >>>>>>> >>>>>>>> On Mon, Sep 22, 2014 at 4:39 PM, Isuru Perera <isu...@wso2.com> >>>>>>>> wrote: >>>>>>>> > Hi everyone, >>>>>>>> > >>>>>>>> > I think we should agree on whether we should use tabs or spaces >>>>>>>> for the >>>>>>>> > indentation. >>>>>>>> > >>>>>>>> > I'm suggesting that we should use 4 spaces for the indentation and >>>>>>>> > completely avoid tabs in our code. >>>>>>>> >>>>>>>> +1 >>>>>>>> >>>>>>>> Tabs can mess up the code when working with different developer >>>>>>>> environments. >>>>>>>> >>>>>>>> >>>>>>>> > >>>>>>>> > I can help to come up with an Eclipse Formatter profile. We >>>>>>>> should also >>>>>>>> > format the entire code base in a single commit after we agree on >>>>>>>> our coding >>>>>>>> > standards. >>>>>>>> >>>>>>>> Great! I can work on a IntelliJ Idea Formatting profile. >>>>>>>> >>>>>>>> > >>>>>>>> > WDYT? >>>>>>>> > >>>>>>>> > Thanks! >>>>>>>> > >>>>>>>> > Best Regards, >>>>>>>> > >>>>>>>> > >>>>>>>> > 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/ >>>>>>>> >> >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > -- >>>>>>>> > Isuru Perera >>>>>>>> > Senior Software Engineer | WSO2, Inc. | http://wso2.com/ >>>>>>>> > Lean . Enterprise . Middleware >>>>>>>> > >>>>>>>> > about.me/chrishantha >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Akila Ravihansa Perera >>>>>>>> Software Engineer, WSO2 >>>>>>>> >>>>>>>> Blog: http://ravihansa3000.blogspot.com >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Imesh Gunaratne >>>>>>> >>>>>>> Technical Lead, WSO2 >>>>>>> Committer & PMC Member, Apache Stratos >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Best Regards, >>>>>> Nirmal >>>>>> >>>>>> Nirmal Fernando. >>>>>> PPMC Member & Committer of Apache Stratos, >>>>>> Senior Software Engineer, WSO2 Inc. >>>>>> >>>>>> Blog: http://nirmalfdo.blogspot.com/ >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Best Regards, >>>>> Nirmal >>>>> >>>>> Nirmal Fernando. >>>>> PPMC Member & Committer of Apache Stratos, >>>>> Senior Software Engineer, WSO2 Inc. >>>>> >>>>> Blog: http://nirmalfdo.blogspot.com/ >>>>> >>>> >>>> >>>> >>>> -- >>>> *Sajith Kariyawasam* >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> *Committer and PMC member, Apache Stratos,WSO2 Inc., http://wso2.com >>>> <http://wso2.com>AMIE (SL)Mobile: +94772269575-- Isuru PereraSenior >>>> Software Engineer | WSO2, Inc. | http://wso2.com/ <http://wso2.com/>Lean . >>>> Enterprise . Middlewareabout.me/chrishantha <http://about.me/chrishantha> * >>>> >>> >> >> >> -- >> -- >> Lahiru Sandaruwan >> Committer and PMC member, Apache Stratos, >> Senior Software Engineer, >> WSO2 Inc., http://wso2.com >> lean.enterprise.middleware >> >> email: lahi...@wso2.com cell: (+94) 773 325 954 >> blog: http://lahiruwrites.blogspot.com/ >> twitter: http://twitter.com/lahirus >> linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146 >> >> > > > -- > *Sajith Kariyawasam* > > > *Committer and PMC member, Apache Stratos,WSO2 Inc., http://wso2.com > <http://wso2.com>AMIE (SL)Mobile: +94772269575* > -- Reka Thirunavukkarasu Senior Software Engineer, WSO2, Inc.:http://wso2.com, Mobile: +94776442007