Hey Andrea, On Wed, 10 Mar 2021 at 12:02, Andrea Aime <andrea.a...@geo-solutions.it> wrote:
> Hi Gabriel, > I would love to see having a limit on the method length... but remember > when running these QAs you're pretty much alone > (as I've been for most of the QA work, even when other people > participated, I ended up doing well over 90% of the job). > Understood. No rush though, we can consider most of this 15+ years old technical debt. > > I would suggest you start with a very high limit, get it fixed, and then > you have a limit that PMD can apply, even if stupidly high. > Then it can go down little by little, until you exhaust the time you want > to dedicate on it. > Yeah, 500 sounded like a stupidly high limit, sounds like a good one to start with, with 4 offenders per project. > > These days I won't be able to do much, with full lockdown in place and > kids at home, it's a lot if I can run some cleanups > where IntelliJ does most of the work for me :-D (which is, what I've been > doing for the past month or two). > Don't worry, and thanks for the interest. I know you've worked hard to get us where we're. As said, no rush, and let's see if others feel like contributing. Cheers, Gabriel. > > Cheers > Andrea > > On Wed, Mar 10, 2021 at 3:13 PM Gabriel Roldan <gabriel.rol...@gmail.com> > wrote: > >> Hey all, >> sorry for cross-posting but this relates to both projects. >> >> One of the PMD rules I'd like to set up the most is >> ExcessiveMEthodLength. It'll just fail on a threshold for lines of code in >> a single method. >> >> I've made some assessments for 500 and 100 lines of code limits, check >> this out: >> >> GeoTools: >> >> https://github.com/groldan/geoserver/wiki/ExcessiveMethodLength-PMD-assessment---GeoTools >> >> GeoServer: >> https://github.com/groldan/geoserver/wiki/ExcessiveMethodLength-PMD-assessment---GeoServer >> >> I think avoiding too large methods is important for maintainability and >> to lower the barrier entry to the project for other people, because trying >> to keep methods concise forces you to think of the design and to split them >> into smaller methods. Ideally, a single method would be succinct and easy >> to read, for anyone to be able to figure out what it does at a given level >> of abstraction, and having to drill down to a lower level of abstraction >> method only if necessary. >> >> I myself often feel overwhelmed when facing such methods, despite having >> so many years of experience on the codebase, it's discouraging. So maybe we >> could do something at least in identifying the most relevant ones and >> trying to make them cleaner. >> Of course some of them would not be a problem cause they're just, either >> generated or not, linear setups of state, like >> org.geotools.gml3.GMLSchema:GMLSchema(), which is 978 lines long. But >> mostly there's a lot of code that would benefit from a second round of >> thinking. >> >> As an example, I tried to tidy >> up org.geotools.coverage.processing.operation.Resampler2D:reproject(...), >> which is currently 618 lines long, and made it 49. Most important thing I >> think is it now reads as intended, instead of having to have so many >> comments explaining what the following hundred lines of code do. >> >> This is the original: >> >> >> https://github.com/geotools/geotools/blob/64e0026c62cf37662194b92e8052594d57ef826e/modules/library/coverage/src/main/java/org/geotools/coverage/processing/operation/Resampler2D.java#L245-L863 >> >> And this the refactored: >> >> >> https://github.com/groldan/geotools/blob/d25f6424f8f4188824c840f400c3414a9ce12531/modules/library/coverage/src/main/java/org/geotools/coverage/processing/operation/Resampler2D.java#L302-L351 >> >> Not saying it's perfect, that shared catch-all state class is debatable, >> but I can certainly get an idea of what the method does at a glimpse and >> follow through if needed. >> >> I know it's something that'd require quite significant and lacking >> resources, but also think it's worth pursuing. Probably a first round to >> set a soft limit of 200 lines long or so, with a longer term goal of 100? >> >> Looking forward to your comments, >> Cheers. >> >> -- >> Gabriel Roldán >> _______________________________________________ >> GeoTools-Devel mailing list >> GeoTools-Devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/geotools-devel >> > > > -- > > Regards, Andrea Aime > > == GeoServer Professional Services from the experts! Visit > http://goo.gl/it488V for more information. == Ing. Andrea Aime @geowolf > Technical Lead GeoSolutions S.A.S. Via di Montramito 3/A 55054 Massarosa > (LU) phone: +39 0584 962313 fax: +39 0584 1660272 mob: +39 339 8844549 > http://www.geo-solutions.it http://twitter.com/geosolutions_it > ------------------------------------------------------- *Con riferimento > alla normativa sul trattamento dei dati personali (Reg. UE 2016/679 - > Regolamento generale sulla protezione dei dati “GDPR”), si precisa che ogni > circostanza inerente alla presente email (il suo contenuto, gli eventuali > allegati, etc.) è un dato la cui conoscenza è riservata al/i solo/i > destinatario/i indicati dallo scrivente. Se il messaggio Le è giunto per > errore, è tenuta/o a cancellarlo, ogni altra operazione è illecita. Le > sarei comunque grato se potesse darmene notizia. This email is intended > only for the person or entity to which it is addressed and may contain > information that is privileged, confidential or otherwise protected from > disclosure. We remind that - as provided by European Regulation 2016/679 > “GDPR” - copying, dissemination or use of this e-mail or the information > herein by anyone other than the intended recipient is prohibited. If you > have received this email by mistake, please notify us immediately by > telephone or e-mail.* > -- Gabriel Roldán
_______________________________________________ GeoTools-Devel mailing list GeoTools-Devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-devel