Hi all, I found [1] which has few recommended lines of code for the java as well. When we increase the no of lines in a class/method, then we will also increase the responsibility [2] of that class/method. Can we propose a convention about line of codes in a method/class as well?
[1] http://www.aivosto.com/project/help/pm-loc.html [2] http://en.wikipedia.org/wiki/Single_responsibility_principle Thanks, Reka On Fri, Oct 3, 2014 at 2:48 PM, Chamila De Alwis <[email protected]> wrote: > +120 columns. > > In most used screen sizes, it would be easier to continue down without > additionally scrolling horizontally. And if a particular line is longer > than 120, it would be either too compact or can easily be broken to > multiple lines. > > > Regards, > Chamila de Alwis > Software Engineer | WSO2 | +94772207163 > Blog: code.chamiladealwis.com > > > > On Fri, Oct 3, 2014 at 1:53 PM, Sajith Kariyawasam <[email protected]> > wrote: > >> It seems that Stratos code in Sonar are checked via "Sonar way with >> FindBugs" profiles, and includes CheckStyle, PMD, and FindBugs, [1] >> therefore better we mention in our coding standards guide to use Sonar in >> developers' IDEs with those plugins installed, rather than mentioning >> to "Run FindBugs on your code" >> >> I will come up with some contents on how to install and use those >> plugins, thereafter we can review and update the document. >> >> [1] https://analysis.apache.org/profiles/permalinks/49 >> >> >> On Thu, Oct 2, 2014 at 1:19 PM, Reka Thirunavukkarasu <[email protected]> >> wrote: >> >>> +1 for 120. >>> >>> On Thu, Oct 2, 2014 at 1:15 PM, Sajith Kariyawasam <[email protected]> >>> 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 <[email protected]> >>>> wrote: >>>> >>>>> +1 for 120. >>>>> >>>>> On Thu, Oct 2, 2014 at 11:19 AM, Isuru Perera <[email protected]> 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 <[email protected]> >>>>>> 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 < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Guys, >>>>>>>> >>>>>>>> Did you all manage to create the formatter profiles? >>>>>>>> >>>>>>>> On Tue, Sep 23, 2014 at 11:59 AM, Nirmal Fernando < >>>>>>>> [email protected]> 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 < >>>>>>>>> [email protected]> 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 < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> On Mon, Sep 22, 2014 at 4:39 PM, Isuru Perera <[email protected]> >>>>>>>>>>> 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 < >>>>>>>>>>> [email protected]> >>>>>>>>>>> > 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: [email protected] 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 >>> >>> >>> >> >> >> -- >> *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
