Continuing the discussion from Classification of "features we don't think are a good way of coding anymore":
What are the ramifications of some language element that has a status of “hidden”?
–
Adam
Continuing the discussion from Classification of "features we don't think are a good way of coding anymore":
What are the ramifications of some language element that has a status of “hidden”?
–
Adam
That it doesn’t appear in the documentation and that use of it is unsupported. Defo the first of those points, I’m presuming the latter. Its definitely an odd one.
That’s a really dangerous combination.
So someone’s used a “hidden” bit of functionality and I inherit the codebase from them. I go to look in the docs and… nothing.
Is this a very good idea?
–
Adam
Languages/software contain “undocumented” features all the time. You use those undocumented features at your own risk. BUT if the suggestion is to change something from documented to undocumented, then - yeah - dangerous indeed.
To me, that doesn’t seem any different to them using, for example, undocumented methods on the underlying Java objects that implement various data types. They shouldn’t have done it – and now you pay the cost of them using undocumented features.
Very true. I was thinking - perhaps - of “hiding” something that was previously not hidden:
So not quite the situation you were speaking of Sean. But, yeah, we all seem to survive using the odd “undocumented” functions, and we don’t explode as a result. Probably not cool for the language vendor to do this though. They should just deprecate it [ducks for cover]
–
Adam
I find it interesting we are discussing a status of “Hidden” when in the other thread I am still trying to get a list of what the status are.
Here’s my 2c:
For the CFML dialect:
For the Lucee Language:
For “hidden”, maybe a setting to throw an exception on use would help folks weed it out of their code.
Personally, I think “hidden” is a bit silly – either support it, deprecate it, or remove it. Similarly, I think that “avoid” / “superseded” are a bit silly too — again, either support it, deprecate it, or remove it.
For the CFML dialect, compatibility means there’s less wiggle room. For the Lucee Language, there’s no code out there yet so just have some conviction about the features!
This has been around for a pretty long time I believe. These are statuses for the internals of Lucee. There’s no suggestion that existing functionality will ever become hidden.
I think its pretty safe to ignore (have a hunt through the FLD/TLD files for the functions/tags with hidden statuses, it may make a little more sense - though I agree its a bit odd).
https://github.com/lucee/Lucee/blob/master/lucee-java/lucee-core/src/resource/fld/web-cfmfunctionlibrary_1_0
https://github.com/lucee/Lucee/blob/master/lucee-java/lucee-core/src/resource/tld/web-cfmtaglibrary_1_0
OK, There are these status currently in the code:
deprecated
hidden
implemeted
unimplemeted
And these 4 status mean what at this point?
deprecated - Lucee dev’s advise using other methods
hidden - not official Lucee functionality and not to appear in documentation
implemented - Implemented
unimplemented - Not implemented
These files are for the internals of Lucee and also aid with the documentation (they formed the basis of Mark Drew’s railodocs + luceedocs).
Again, as per my comment on the other thread, it is documented here:
https://bitbucket.org/lucee/lucee/wiki/Statuses%20of%20functionality
Cheers Andrew. I have to admit I didn’t think to look anywhere other than docs.lucee.org for documentation. I forgot you had the Wiki as well.
To clarify further… is the wiki just a legacy thing, and eventually everything will be moved to the docs site, or is there a distinction between what docs are homed where or…?
–
Adam