xsl-list
[Top] [All Lists]

Re: [xsl] user-defined XSLT functions and stylesheet variables?

2021-06-19 19:11:50
All the responses given by Eliot and Liam respect Clean Code[1] best practises. Many principles must be respected if you expect your code may evolve :

 * DRY : Don't Repeat Yourself ; sometime in opposition with Single
   Responsability principle
 * YAGNI : You Ain't Gonna Need It
 * SOLID, with only some of them applicable to XSLT :
     o S : Single Responsability Principle: There must have no more
       than One reason to modifiy this piece of code
     o O : Open Close Principle: Open to Extension, Closed to Modification

All of these principles try to avoid use of global variables, even if it's not clearly written in the details of pirinciples. As Mike says, Evil is in the detail, but Evil is also in global variables.

HTH,
Christophe

[1] : clean Code, Bob Martin, Pearson Addison-Wesley, 2009

Le 18/06/2021 à 20:28, Eliot Kimber ekimber(_at_)contrext(_dot_)com a écrit :

If I was given a style sheet with a function that used a global variable I would immediately rewrite the function to take that variable as a parameter.

Cheers,

E.

--

Eliot Kimber

http://contrext.com

*From: *"Liam R. E. Quin liam(_at_)fromoldbooks(_dot_)org" <xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>
*Reply-To: *<xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
*Date: *Friday, June 18, 2021 at 12:56 PM
*To: *<xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
*Subject: *Re: [xsl] user-defined XSLT functions and stylesheet variables?

On Fri, 2021-06-18 at 17:42 +0000, David Birnbaum djbpitt(_at_)gmail(_dot_)com <mailto:djbpitt(_at_)gmail(_dot_)com>

wrote:

    Dear XSLT-list,

    Is there agreement about Best Practice with respect to using

    stylesheet

    (global) variables inside user-defined functions?

Tommie once gave a talk about best practice considered hamrful... :)

You've identified some of the issues, but for me the most important

ones are this:

(1) locality of reference: can i understand thefunction without having

to look elsewhere?

(2) maintainability: how easy will it be to fix problems in this

function in the future, or for someone else to change it, perhaps to

workslightly differently on edge cases. Assume they are in a hurry.

(3) can i take the function and reuse it in another stylesheet later?

Overall the use of global variables is likely to be an impediment to

each of these.

Liam

--

Liam Quin, https://www.delightfulcomputing.com/ <https://www.delightfulcomputing.com/>

Available for XML/Document/Information Architecture/XSLT/

XSL/XQuery/Web/Text Processing/A11Y training, work & consulting.

Barefoot Web-slave, antique illustrations: http://www.fromoldbooks.org <http://www.fromoldbooks.org>

XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/2837134> (by email <>)
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>