Thanks all for approval. Thanks Taher and Deepak for valuable suggestions. I will think on them.
Jacques, I am bit confused by your reply, could you please elaborate your point. Regards, -- Amardeep Singh Jhajj On Fri, Jun 24, 2016 at 4:17 PM, Jacques Le Roux < jacques.le.r...@les7arts.com> wrote: > Amardeep, > > I agree with your points, I'd just request that we do that in a branch > with a load of UI tests (good occasion to use Selenium). > Our js code is complex and fragile, I think notably at the global > variables in fieldlookup.js and selectall.js which are maybe hard to avoid. > IMO those files are the main pains. > > Thanks > > Jacques > > > > Le 24/06/2016 à 09:20, Amardeep Singh Jhajj a écrit : > >> Hello everyone, >> >> Currently, OFBiz javascript code (except third party libraries) is not >> written with the best practices which can cause following problems - >> >> 1. Increases the code maintenance effort. >> 2. Impact page performance. >> 3. Present not good examples to new contributors which leads to C/P to >> various areas of js code. >> >> Here are things we should do for cleanup and improvements in js code. >> >> 1. Remove unused javascript code and files if any. >> 2. Use best practices for javascript coding to improve performance (I have >> listed some of it below). >> 3. Move utility js functions to one js file. >> 4. Remove deprecated code and use latest. For ex: We are still using >> "language='javascript'" attribute at script tag which is deprecated a >> years >> ago. >> 5. js should be loaded at bottom of the page, currently its in Header. Its >> a tedious task now to move it into footer because we have lot of js code >> inline in ftls. >> 6. js should not be written inline, it should be enough generic to be in >> minimum number of files and have generic code for doing the common set of >> operations over DOM. >> 7. Currently our macros of rendering pages has inline scripts, they can be >> moved to one macrorenderer.js with generic code as we can use classes, ids >> and data-attributes for doing any operation over html DOM. >> 8. After all cleanup work, we can think of build tool (like grunt) for >> various javascript build tasks (minification, concatenation of files) if >> needed. Its just a thought. >> >> I know its a huge effort and need to be done carefully. So before doing >> any >> major changes, I would like to start work with first 4 points. >> >> Here is the list of some best practices to start with: >> >> 1. Use [] Instead of New Array() >> 2. Long list of variables? Omit the "Var" keyword and use commas instead. >> 3. Reduce global variables >> 4. Use explicit blocks >> 5. Start blocks on the same line >> 6. Always, Always Use Semicolons - Having said that, this is a very bad >> practice that can potentially lead to much bigger, and harder to find, >> issues. >> 7. Optimize loops. Avoid calculating the length of array in for loop >> iteration. >> 8. Avoid multiple redundant jQuery DOM manupulation by saving reference to >> any object. >> 9. Try to use meaningful comments. >> 10. Many more. >> >> Here are some links of best practices information- >> >> https://www.w3.org/wiki/JavaScript_best_practices >> http://www.codeproject.com/Articles/580165/JavaScript-Best-Practices >> https://developer.yahoo.com/performance/rules.html >> >> If everyone agrees, I would like to start on this work. >> >> Please let me know your thoughts on it. >> >> Thanks and Regards >> -- >> Amardeep Singh Jhajj >> >> >