编写包时,应该使用自上而下的方法还是自下而上的方法?
例如,以下两种方法(在 expl3 语法中)
% Top-to-bottom
\NewDocumentCommand \foo {m} { \mytest_foo:n {#1} }
\cs_new:Npn \mytest_foo:n #1 { \__mytest_foo_aux:n {#1} }
\cs_new:Npn \__mytest_foo_aux:n #1 { some~ code~ of~ #1 }
和
% Bottom-to-top
\cs_new:Npn \__mytest_foo_aux:n #1 { some~ code~ of~ #1 }
\cs_new:Npn \mytest_foo:n #1 { \__mytest_foo_aux:n {#1} }
\NewDocumentCommand \foo {m} { \mytest_foo:n {#1} }
哪一个更好?
答案1
嗯,其实没什么区别
\cs_new:Npn \mytest_foo:n #1 { \__mytest_foo_aux:n {#1} }
\NewDocumentCommand \foo {m} { \mytest_foo:n {#1} }
\cs_new:Npn \__mytest_foo_aux:n #1 { some~ code~ of~ #1 }
也可以。
expl3
对于较大的项目,人们可能会在与“用户界面规范”(使用)不同的文件中找到“实现”(使用约定xparse
),因此即使代码没有改变,加载的顺序也可能因文档而异。
xparse
是围绕着在某些底层实现的功能上指定一个或多个 LaTeX2e 样式的接口这一理念而设计的,因此是否将规范放在实现之前主要取决于您想要如何记录事物,尽管文档不一定需要遵循代码。您可能在expl3
添加接口之前编写了较低级别的代码xparse
,或者您可能使用规范出一个用户界面xparse
,然后稍后实现一些东西来支持它。