*Documentation:*
I'd like to use Doxygen, but not sure, if this is still a good
option, since Tcl is not supported anymore. Whats your preference?
My goal is, to document the API of my project in source and generate
it into HTML automatically.
*Tcl-packages:*
The first implementations (there are three at this time...) used
Tcl-packages to split the whole thing into architecture components.
A main package that loaded all the others in its init-part and then
provided the Rivet-Apache-plugin as package which was used in a small Rivet-script that just passed on the HTTPS-request to my package.
The whole package hierarchy did not start at global namespace "::"
but as "myPackage::mod1::...". The idea was, that this way it would
be possible to use "require package" in a namespace and thus use the
whole thing not in global namespace but where convenient. For
refactoring I'm now considering, if starting globally as "::myPackage::mod1::..." is better or not? Is there a best practice regarding that?
*Rivet vs. Standalone:*
This is almost decided, but maybe you have some good input here: I
think, I will get rid of using Rivet-apache-module.
*Procs in namespaces vs. namespace ensembles:*
Ensembles feel kind of elegant to me, but by default, I mostly just
write procs in namespaces, although related procs could go into an
ensemble - so much for clean APIs... But then I'm not sure about the
name resolving performance of ensemble commands vs. direct proc
call.
*Documentation:*
I'd like to use Doxygen, but not sure, if this is still a good
option, since Tcl is not supported anymore. Whats your preference?
My goal is, to document the API of my project in source and generate
it into HTML automatically.
Personal opinion here, but in every case I can think of where doxygen
was used to "autodocument the source" the resulting docs were no more >valuable than simply reading the source (in fact, often less valuable).
The doxygen html would tell you that there were these twelve C
functions you could call, and that their parameters were X, Y, or Z,
but leave off what the function did (I guess the author's though their
names were meaningful enough) and more often than not, leave off any >description of what was expected of the parameters.
Now, this might have been a failure of the author to insert enough
"doxygen tags" into the source to generate proper docs, but as I saw
the pattern with *every* one I remember, it felt more like doxygen
existed merely to satisify some corportate code review checkbox for >"auto-generated code documentation" where the code review checkbox
omitted a second checkbox of "and the output documentation is useful to >someone for the purpose of learning/using the API).
stk wrote:
Personal opinion here, but in every case I can think of where doxygen
was used to "autodocument the source" the resulting docs were no more valuable than simply reading the source
...*Tcl-packages:*
The whole package hierarchy did not start at global namespace "::"I don't think this will matter much. Most scripts do their package
but as "myPackage::mod1::...". The idea was, that this way it would
be possible to use "require package" in a namespace and thus use the
whole thing not in global namespace but where convenient. For
refactoring I'm now considering, if starting globally as "::myPackage::mod1::..." is better or not? Is there a best practice regarding that?
requires at the top level of the initial script and so they are "at
global level" anyway. Not forcing global level makes the package
slightly more flexible, but perhaps a documentation note of the
fexibility would be in order.
*Rivet vs. Standalone:*I feel that if you do so you will find yourself eventually adding back,
This is almost decided, but maybe you have some good input here: I
think, I will get rid of using Rivet-apache-module.
as custom code you have to write yourself, much of what Rivet provides
to you if you go this route.
If that is what you want, then go for it. But if your focus is the
blog system, not the underlying web plumbing, then keeping Rivet may
prove better in the end.
Tcl has a very useful [time] command. Test, on your hardware and with
your code the performance of both and see what you get. Then you won't
be guessing, but will have actual data.
I find the Doxygen reports for Tcl projects very useful. You do need
to use enough tags to provide the information -- nothing will provide
it for you if it's not there.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 297 |
Nodes: | 16 (2 / 14) |
Uptime: | 31:44:09 |
Calls: | 6,669 |
Calls today: | 1 |
Files: | 12,216 |
Messages: | 5,338,153 |